[C ++] [DPDK]使用正确的“私有大小”字节对齐创建rte_mempool
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C ++] [DPDK]使用正确的“私有大小”字节对齐创建rte_mempool相关的知识,希望对你有一定的参考价值。
我对DPDK很新,并且通常使用字节。
我试图通过在mempool中复制它来修改接收到的数据包的长度,然后使用所述mempool创建一个rte_mbuf,我可以修改它。创建我使用的mempool
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应用程序私有的大小介于rte_mbuf结构和数据缓冲区之间。该值必须与RTE_MBUF_PRIV_ALIGN对齐。
所以是的,priv_size应该与RTE_MBUF_PRIV_ALIGN对齐,这是8个字节。
所以你必须传递给0,8,16,24等的rte_pktmbuf_pool_create
priv_size。
以上是关于[C ++] [DPDK]使用正确的“私有大小”字节对齐创建rte_mempool的主要内容,如果未能解决你的问题,请参考以下文章