X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_latencystats%2Frte_latencystats.c;h=ba2fff3bcbb63a3f4db99b109bf71feff2994ca5;hb=55f0335e90908b4f052594c14f7636413b894676;hp=98e018939ecbc6ced3c8612c8d2a33511525b236;hpb=d00a52acf9a07d392ad1093cfb6d46a6737fe1ae;p=dpdk.git diff --git a/lib/librte_latencystats/rte_latencystats.c b/lib/librte_latencystats/rte_latencystats.c index 98e018939e..ba2fff3bcb 100644 --- a/lib/librte_latencystats/rte_latencystats.c +++ b/lib/librte_latencystats/rte_latencystats.c @@ -42,6 +42,7 @@ struct rte_latency_stats { float avg_latency; /**< Average latency in nano seconds */ float max_latency; /**< Maximum latency in nano seconds */ float jitter; /** Latency variation */ + rte_spinlock_t lock; /** Latency calculation lock */ }; static struct rte_latency_stats *glob_stats; @@ -164,6 +165,7 @@ calc_latency(uint16_t pid __rte_unused, latency[cnt++] = now - pkts[i]->timestamp; } + rte_spinlock_lock(&glob_stats->lock); for (i = 0; i < cnt; i++) { /* * The jitter is calculated as statistical mean of interpacket @@ -193,6 +195,7 @@ calc_latency(uint16_t pid __rte_unused, alpha * (latency[i] - glob_stats->avg_latency); prev_latency = latency[i]; } + rte_spinlock_unlock(&glob_stats->lock); return nb_pkts; } @@ -223,6 +226,7 @@ rte_latencystats_init(uint64_t app_samp_intvl, } glob_stats = mz->addr; + rte_spinlock_init(&glob_stats->lock); samp_intvl = app_samp_intvl * latencystat_cycles_per_ns(); /** Register latency stats with stats library */