[dpdk]rte_mempool管理

源码过程简略说明:

1、 rte_mempool_create 接口调用 rte_mempool_create_empty 创建内存池

2、 rte_mempool_create_empty

调用 rte_memzone_reserve 申请 struct rte_memzone *mz变量,struct rte_mempool *mp来自 mz。 待 mp 初始化后,加入单链表 rte_mempool_tailq 内。

3、 rte_pktmbuf_pool_create 接口经过 rte_pktmbuf_pool_create_by_ops 调用 rte_mempool_create_empty 创建内存池。

综上,可通过遍历 单链表 rte_mempool_tailq 来获取 rte 内部使用的所有内存池信息。正好 rte 封装了几个可用的函数:

void rte_mempool_list_dump(FILE *f)

该函数遍历内存池链表,将每个内存池信息,包括名称、数据地址、节点大小和数量都写到入参的 FILE *p 中。

struct rte_mempool *rte_mempool_lookup(const char *name)

该函数遍历链表,比较入参和内存池名称来获取内存池指针。

void rte_mempool_walk(void (*func)(struct rte_mempool *, void *),
		      void *arg)

该函数第一个参数是函数指针,第二个参数可选参数,函数内部遍历链表,将各个内存池指针和 arg 作为 func 的入参。通过此函数,用户可自定义一些对内存池的操作,比如计算总量、获取统计信息等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值