[dpdk-dev] [PATCH 4/5] memzone: add iterator function

Stephen Hemminger stephen at networkplumber.org
Sat May 3 01:42:55 CEST 2014


When doing diagnostic function, it is useful to have a ability
to iterate over all memzones.

Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>


--- a/lib/librte_eal/common/eal_common_memzone.c	2014-05-02 16:31:15.375587103 -0700
+++ b/lib/librte_eal/common/eal_common_memzone.c	2014-05-02 16:31:15.375587103 -0700
@@ -505,3 +505,20 @@ rte_eal_memzone_init(void)
 
 	return 0;
 }
+
+/* Walk all reserved memory zones */
+void rte_memzone_walk(void (*func)(const struct rte_memzone *, void *),
+		      void *arg)
+{
+	struct rte_mem_config *mcfg;
+	unsigned i;
+
+	mcfg = rte_eal_get_configuration()->mem_config;
+
+	rte_rwlock_read_lock(&mcfg->mlock);
+	for (i=0; i<RTE_MAX_MEMZONE; i++) {
+		if (mcfg->memzone[i].addr != NULL)
+			(*func)(&mcfg->memzone[i], arg);
+	}
+	rte_rwlock_read_unlock(&mcfg->mlock);
+}
--- a/lib/librte_eal/common/include/rte_memzone.h	2014-05-02 16:31:15.375587103 -0700
+++ b/lib/librte_eal/common/include/rte_memzone.h	2014-05-02 16:31:15.375587103 -0700
@@ -248,6 +248,17 @@ const struct rte_memzone *rte_memzone_lo
  */
 void rte_memzone_dump(void);
 
+/**
+ * Walk list of all memzones
+ *
+ * @param func
+ *   Iterator function
+ * @param arg
+ *   Argument passed to iterator
+ */
+void rte_memzone_walk(void (*func)(const struct rte_memzone *, void *arg),
+		      void *arg);
+
 #ifdef __cplusplus
 }
 #endif



More information about the dev mailing list