ошибка сегментации — [C ++] [DPDK] Создайте rte_mempool с правильным & quot; приватным размером & quot; выравнивание байтов

Я довольно новичок в DPDK и вообще работаю с байтами.

Я пытаюсь изменить длину полученного пакета, скопировав его в mempool, а затем создав rte_mbuf с указанным mempool, который я могу изменить.
Для создания 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

Я не могу найти больше информации в описании и много гуглюл проблему, но я не найду решение, кто-нибудь может осветить меня?

0

Решение

ссылка на документацию Вы предоставили цитаты:

priv_size Размер частного приложения находится между структурой rte_mbuf и буфером данных. Это значение должно быть выровнено по RTE_MBUF_PRIV_ALIGN.

Так что да, priv_size должен быть выровнен по RTE_MBUF_PRIV_ALIGN, который составляет 8 байтов.

Так что вы должны перейти к rte_pktmbuf_pool_create priv_size 0, 8, 16, 24 и т. д.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]