mempool: add function to iterate the memory chunks
In the same model than rte_mempool_obj_iter(), introduce rte_mempool_mem_iter() to iterate the memory chunks attached to the mempool. Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
parent
84121f1971
commit
b18e19a892
@ -246,6 +246,22 @@ rte_mempool_obj_iter(struct rte_mempool *mp,
|
||||
return n;
|
||||
}
|
||||
|
||||
/* call mem_cb() for each mempool memory chunk */
|
||||
uint32_t
|
||||
rte_mempool_mem_iter(struct rte_mempool *mp,
|
||||
rte_mempool_mem_cb_t *mem_cb, void *mem_cb_arg)
|
||||
{
|
||||
struct rte_mempool_memhdr *hdr;
|
||||
unsigned n = 0;
|
||||
|
||||
STAILQ_FOREACH(hdr, &mp->mem_list, next) {
|
||||
mem_cb(mp, mem_cb_arg, hdr, n);
|
||||
n++;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
/* get the header, trailer and total size of a mempool element. */
|
||||
uint32_t
|
||||
rte_mempool_calc_obj_size(uint32_t elt_size, uint32_t flags,
|
||||
|
@ -335,6 +335,15 @@ typedef void (rte_mempool_obj_cb_t)(struct rte_mempool *mp,
|
||||
void *opaque, void *obj, unsigned obj_idx);
|
||||
typedef rte_mempool_obj_cb_t rte_mempool_obj_ctor_t; /* compat */
|
||||
|
||||
/**
|
||||
* A memory callback function for mempool.
|
||||
*
|
||||
* Used by rte_mempool_mem_iter().
|
||||
*/
|
||||
typedef void (rte_mempool_mem_cb_t)(struct rte_mempool *mp,
|
||||
void *opaque, struct rte_mempool_memhdr *memhdr,
|
||||
unsigned mem_idx);
|
||||
|
||||
/**
|
||||
* A mempool constructor callback function.
|
||||
*
|
||||
@ -605,6 +614,24 @@ rte_dom0_mempool_create(const char *name, unsigned n, unsigned elt_size,
|
||||
uint32_t rte_mempool_obj_iter(struct rte_mempool *mp,
|
||||
rte_mempool_obj_cb_t *obj_cb, void *obj_cb_arg);
|
||||
|
||||
/**
|
||||
* Call a function for each mempool memory chunk
|
||||
*
|
||||
* Iterate across all memory chunks attached to a rte_mempool and call
|
||||
* the callback function on it.
|
||||
*
|
||||
* @param mp
|
||||
* A pointer to an initialized mempool.
|
||||
* @param mem_cb
|
||||
* A function pointer that is called for each memory chunk.
|
||||
* @param mem_cb_arg
|
||||
* An opaque pointer passed to the callback function.
|
||||
* @return
|
||||
* Number of memory chunks iterated.
|
||||
*/
|
||||
uint32_t rte_mempool_mem_iter(struct rte_mempool *mp,
|
||||
rte_mempool_mem_cb_t *mem_cb, void *mem_cb_arg);
|
||||
|
||||
/**
|
||||
* Dump the status of the mempool to the console.
|
||||
*
|
||||
|
@ -22,6 +22,7 @@ DPDK_16.07 {
|
||||
|
||||
rte_mempool_check_cookies;
|
||||
rte_mempool_obj_iter;
|
||||
rte_mempool_mem_iter;
|
||||
|
||||
local: *;
|
||||
} DPDK_2.0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user