[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的主要内容,如果未能解决你的问题,请参考以下文章

DPDK PKTGEN使用

运行DPDK KNI示例的问题

dpdk 怎么给绑定驱动的两个网卡发送数据

dpdk源码分析:cmdline中的命令添加

dpdk源码分析:交互式命令行的实现 命令添加

linux后台开发必备DPDK技术精髓