DPDK17.02内存池管理1 – rte_mempool_create_empty

该函数定义一个空的内存池,只有头部,未分配实际的数据内存空间。

1、数据结构

struct rte_mempool 结构的定义如下:

结构关系如下:

其中 RTE_MEMPOOL_CACHE_MAX_SIZE 的默认值为512,RTE_MAX_LCORE 默认值通常为64。
这两个值可以在编译前在配置文件中修改。

2、rte_mempool_create_empty() 函数

该函数创建一个空的内存池,只包含内存池的管理头。

创建完成后,其内存结构如下:

struct rte_pktmbuf_pool_private 结构用来描述pktmbuf内存池中每个mbuf 对象的空间大小。mbuf_data_room_size用来描述每个mbuf结构的数据空间大小,mbuf_priv_size用来描述每个mbuf中的私有空间的大小,如果不需要,该空间可以为0。

2.1 rte_memzone_reserve() 函数

该函数分配 struct rte_memzone 结构的内存并填充,如果分配失败则返回 NULL。
struct rte_memzone 结构体定义如下:

该函数在很多模块中使用,如mempool,ring等。

在 rte_mempool_create_empty() 函数中,该函数的调用关系为:

memzone_reserve_aligned_thread_unsafe() 函数解析如下:

2.2 mempool_cache_init() 函数

该函数用来初始化mp之后的每个lcore_cache 结构,该结构定义如下:

mempool_cache_init() 函数定义如下:

3、rte_mempool_free() 函数

该函数用来释放已分配的内存池。

————————————————————

原创文章,转载请注明: 转载自孙希栋的博客

本文链接地址: 《DPDK17.02内存池管理1 – rte_mempool_create_empty》

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up