2017-12-20 29 views
0

私はDPDKで新しく、一般的にバイトで作業します。[C++] [DPDK]正しい「プライベートサイズ」のバイトアライメントを持つrte_mempoolを作成します。

私は受け取ったパケットの長さをmempoolにコピーしてから変更することができる前記のmempoolでrte_mbufを作成して修正しようとしています。私はhttp://dpdk.org/doc/api/rte__mbuf_8h.html#a593921f13307803b94bbb4e0932db962

にdescripted

mem_pool = rte_pktmbuf_pool_create(packet, 1, 
         RTE_MBUF_DEFAULT_DATAROOM, <?>, 
         RTE_MBUF_DEFAULT_BUF_SIZE, 
         SOCKET_ID_ANY); 

を使用MEMPOOLを作成するには 私はこのエラーが発生したとして、この呼び出しでは、常にpriv_sizeに間違った値を取得するように見える:

MBUF: mbuf priv_size=<variable> is not aligned 
    Segmentation fault 

私がすることができます説明でより多くの情報を見つけて問題をたくさん見つけましたが、私は解決策を見つけられません。だれでも私を照らすことができますか?

答えて

1

あなたが引用符を提供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は8バイトであるRTE_MBUF_PRIV_ALIGNに整列されなければならないが。

だから、あなたが0のrte_pktmbuf_pool_create priv_size、8、16に渡す必要があり、24など

+0

私は単純に0に初期化さuint16_tを使用し、それがトリックをした、ありがとう!私は理解するための例が必要だったと思う – Ruffio

関連する問題