| 1368 | } |
| 1369 | |
| 1370 | void rte_mempool_walk(void (*func)(struct rte_mempool *, void *), |
| 1371 | void *arg) |
| 1372 | { |
| 1373 | struct rte_tailq_entry *te = NULL; |
| 1374 | struct rte_mempool_list *mempool_list; |
| 1375 | void *tmp_te; |
| 1376 | |
| 1377 | mempool_list = RTE_TAILQ_CAST(rte_mempool_tailq.head, rte_mempool_list); |
| 1378 | |
| 1379 | rte_mcfg_mempool_read_lock(); |
| 1380 | |
| 1381 | RTE_TAILQ_FOREACH_SAFE(te, mempool_list, next, tmp_te) { |
| 1382 | (*func)((struct rte_mempool *) te->data, arg); |
| 1383 | } |
| 1384 | |
| 1385 | rte_mcfg_mempool_read_unlock(); |
| 1386 | } |
| 1387 | |
| 1388 | struct mempool_callback_data { |
| 1389 | TAILQ_ENTRY(mempool_callback_data) callbacks; |