#include <rte_memzone.h>
#include <rte_spinlock.h>
+int metrics_initialized;
+
#define RTE_METRICS_MEMZONE_NAME "RTE_METRICS"
/**
struct rte_metrics_data_s *stats;
const struct rte_memzone *memzone;
+ if (metrics_initialized)
+ return;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return;
stats = memzone->addr;
memset(stats, 0, sizeof(struct rte_metrics_data_s));
rte_spinlock_init(&stats->lock);
+ metrics_initialized = 1;
}
int
{
struct rte_metrics_data_s *stats;
const struct rte_memzone *memzone;
+ int ret;
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return -EINVAL;
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