[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