doc: add Meson coding style to contributors guide
[dpdk.git] / lib / librte_metrics / rte_metrics.c
index df5e32c..e2a0fbe 100644 (file)
@@ -13,7 +13,8 @@
 #include <rte_memzone.h>
 #include <rte_spinlock.h>
 
-#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