From: Stephen Hemminger Date: Fri, 2 May 2014 23:42:55 +0000 (-0700) Subject: memzone: add iterator function X-Git-Tag: spdx-start~10819 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=58f8a1d2e30e0ee6a83e1cdb2b73990b55e5f06c;hp=e5ac7c2ff367edd807b6794dd127042e431c5b85;p=dpdk.git memzone: add iterator function When doing diagnostic function, it is useful to have a ability to iterate over all memzones. Signed-off-by: Stephen Hemminger Acked-by: Olivier Matz --- diff --git a/lib/librte_eal/common/eal_common_memzone.c b/lib/librte_eal/common/eal_common_memzone.c index 2a69c4954e..3918688db6 100644 --- a/lib/librte_eal/common/eal_common_memzone.c +++ b/lib/librte_eal/common/eal_common_memzone.c @@ -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; imemzone[i].addr != NULL) + (*func)(&mcfg->memzone[i], arg); + } + rte_rwlock_read_unlock(&mcfg->mlock); +} diff --git a/lib/librte_eal/common/include/rte_memzone.h b/lib/librte_eal/common/include/rte_memzone.h index 100233b85c..3a000e2867 100644 --- a/lib/librte_eal/common/include/rte_memzone.h +++ b/lib/librte_eal/common/include/rte_memzone.h @@ -252,6 +252,17 @@ const struct rte_memzone *rte_memzone_lookup(const char *name); */ void rte_memzone_dump(FILE *); +/** + * 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