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 <stephen@networkplumber.org>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
Stephen Hemminger 2014-05-02 16:42:55 -07:00 committed by Thomas Monjalon
parent e5ac7c2ff3
commit 58f8a1d2e3
2 changed files with 28 additions and 0 deletions

View File

@ -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);
}

View File

@ -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