0

我对 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

我在描述中找不到更多信息,并用谷歌搜索了很多问题,但我找不到解决方案,有人能告诉我吗?

4

1 回答 1

1

您提供的文档链接引用:

priv_size 应用程序私有的大小在 rte_mbuf 结构和数据缓冲区之间。此值必须与 RTE_MBUF_PRIV_ALIGN 对齐。

所以是的,priv_size 应该与 8 个字节的 RTE_MBUF_PRIV_ALIGN 对齐。

因此,您必须将rte_pktmbuf_pool_createpriv_size 传递给 0、8、16、24 等。

于 2017-12-20T15:53:37.300 回答