diff --git a/CHANGELOG.md b/CHANGELOG.md index f30ee8600..3f2841cd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## v18.04: (Upcoming Release) +## Env + +Add wrapper for DPDK rte_mempool_get_bulk() via spdk_mempool_get_bulk(). + ### Bdev Add new optional bdev module interface function, init_complete, to notify bdev modules diff --git a/include/spdk/env.h b/include/spdk/env.h index e50ff5f7f..81bfd29ab 100644 --- a/include/spdk/env.h +++ b/include/spdk/env.h @@ -284,6 +284,17 @@ void spdk_mempool_free(struct spdk_mempool *mp); */ void *spdk_mempool_get(struct spdk_mempool *mp); +/** + * Get multiple elements from a memory pool. + * + * \param mp Memory pool to get multiple elements from. + * \param ele_arr Array of the elements to fill. + * \param count Count of elements to get. + * + * \return 0 on success, negative errno on failure. + */ +int spdk_mempool_get_bulk(struct spdk_mempool *mp, void **ele_arr, size_t count); + /** * Put an element back into the memory pool. * diff --git a/lib/env_dpdk/env.c b/lib/env_dpdk/env.c index d13210307..da7696900 100644 --- a/lib/env_dpdk/env.c +++ b/lib/env_dpdk/env.c @@ -224,6 +224,12 @@ spdk_mempool_get(struct spdk_mempool *mp) return ele; } +int +spdk_mempool_get_bulk(struct spdk_mempool *mp, void **ele_arr, size_t count) +{ + return rte_mempool_get_bulk((struct rte_mempool *)mp, ele_arr, count); +} + void spdk_mempool_put(struct spdk_mempool *mp, void *ele) {