X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_metrics%2Frte_metrics.c;h=e2a0fbeda8e27449ac63035a7d7f6b2aa73e258f;hb=5b38d8cd4663;hp=df5e32c59f78ccefde51c8e692c90b3c15217917;hpb=44dc7c0a2609189ff7154872abaeadb9dce4ea04;p=dpdk.git diff --git a/lib/librte_metrics/rte_metrics.c b/lib/librte_metrics/rte_metrics.c index df5e32c59f..e2a0fbeda8 100644 --- a/lib/librte_metrics/rte_metrics.c +++ b/lib/librte_metrics/rte_metrics.c @@ -13,7 +13,8 @@ #include #include -#define RTE_METRICS_MAX_METRICS 256 +int metrics_initialized; + #define RTE_METRICS_MEMZONE_NAME "RTE_METRICS" /** @@ -61,6 +62,8 @@ rte_metrics_init(int socket_id) struct rte_metrics_data_s *stats; const struct rte_memzone *memzone; + if (metrics_initialized) + return; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return; @@ -74,6 +77,7 @@ rte_metrics_init(int socket_id) stats = memzone->addr; memset(stats, 0, sizeof(struct rte_metrics_data_s)); rte_spinlock_init(&stats->lock); + metrics_initialized = 1; } int @@ -81,6 +85,7 @@ rte_metrics_deinit(void) { struct rte_metrics_data_s *stats; const struct rte_memzone *memzone; + int ret; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return -EINVAL; @@ -92,8 +97,10 @@ rte_metrics_deinit(void) stats = memzone->addr; memset(stats, 0, sizeof(struct rte_metrics_data_s)); - return rte_memzone_free(memzone); - + ret = rte_memzone_free(memzone); + if (ret == 0) + metrics_initialized = 0; + return ret; } int