]> git.droids-corp.org - dpdk.git/blobdiff - lib/librte_mempool/rte_mempool.c
mempool: add iterator function
[dpdk.git] / lib / librte_mempool / rte_mempool.c
index f6cbc7c44108555ddd90fdc4e1989763cb002148..9a297e6bba024e00b481b2dd08f6fb39c8748225 100644 (file)
@@ -856,3 +856,24 @@ rte_mempool_lookup(const char *name)
 
        return mp;
 }
+
+void rte_mempool_walk(void (*func)(const struct rte_mempool *, void *),
+                     void *arg)
+{
+       struct rte_mempool *mp = NULL;
+       struct rte_mempool_list *mempool_list;
+
+       if ((mempool_list =
+            RTE_TAILQ_LOOKUP_BY_IDX(RTE_TAILQ_MEMPOOL, rte_mempool_list)) == NULL) {
+               rte_errno = E_RTE_NO_TAILQ;
+               return;
+       }
+
+       rte_rwlock_read_lock(RTE_EAL_MEMPOOL_RWLOCK);
+
+       TAILQ_FOREACH(mp, mempool_list, next) {
+               (*func)(mp, arg);
+       }
+
+       rte_rwlock_read_unlock(RTE_EAL_MEMPOOL_RWLOCK);
+}