[C++][DPDK] 创建具有正确 "private size" 字节对齐的 rte_mempool
[C++][DPDK] Create a rte_mempool with the correct "private size" byte alignment
我对 DPDK 还很陌生,并且通常使用字节。
我正在尝试修改接收到的数据包的长度,方法是将其复制到内存池中,然后使用所述内存池创建一个 rte_mbuf,我可以对其进行修改。
要创建内存池,我使用
mem_pool = rte_pktmbuf_pool_create(packet, 1,
RTE_MBUF_DEFAULT_DATAROOM, <?>,
RTE_MBUF_DEFAULT_BUF_SIZE,
SOCKET_ID_ANY);
描述于http://dpdk.org/doc/api/rte__mbuf_8h.html#a593921f13307803b94bbb4e0932db962
在这个调用中,我似乎总是得到错误的 priv_size 值,因为我收到此错误:
MBUF: mbuf priv_size=<variable> is not aligned
Segmentation fault
我无法在描述中找到更多信息,并在谷歌上搜索了很多问题,但我找不到解决方案,任何人都可以照亮我吗?
您提供的link to the documentation引号:
priv_size Size of application private are between the rte_mbuf structure and the data buffer. This value must be aligned to RTE_MBUF_PRIV_ALIGN.
所以是的,priv_size 应该与 RTE_MBUF_PRIV_ALIGN 对齐,即 8 个字节。
所以你必须传递给 rte_pktmbuf_pool_create
priv_size of 0, 8, 16, 24 etc.
我对 DPDK 还很陌生,并且通常使用字节。
我正在尝试修改接收到的数据包的长度,方法是将其复制到内存池中,然后使用所述内存池创建一个 rte_mbuf,我可以对其进行修改。 要创建内存池,我使用
mem_pool = rte_pktmbuf_pool_create(packet, 1,
RTE_MBUF_DEFAULT_DATAROOM, <?>,
RTE_MBUF_DEFAULT_BUF_SIZE,
SOCKET_ID_ANY);
描述于http://dpdk.org/doc/api/rte__mbuf_8h.html#a593921f13307803b94bbb4e0932db962
在这个调用中,我似乎总是得到错误的 priv_size 值,因为我收到此错误:
MBUF: mbuf priv_size=<variable> is not aligned
Segmentation fault
我无法在描述中找到更多信息,并在谷歌上搜索了很多问题,但我找不到解决方案,任何人都可以照亮我吗?
您提供的link to the documentation引号:
priv_size Size of application private are between the rte_mbuf structure and the data buffer. This value must be aligned to RTE_MBUF_PRIV_ALIGN.
所以是的,priv_size 应该与 RTE_MBUF_PRIV_ALIGN 对齐,即 8 个字节。
所以你必须传递给 rte_pktmbuf_pool_create
priv_size of 0, 8, 16, 24 etc.