2017-07-03 14 views
0

DPDKが新しくなっています。DPDK mbufディープコピー

static struct rte_mbuf* rte_pktmbuf_clone(struct rte_mbuf *md,struct rte_mempool *mp) 

だけで指し示すことによって、それをdeep-copyように思われていません。

は、私は深いコピーmbuf 私が見つけた唯一のmbuf APIコマンドにしたいという意味 数回を複製する必要があるパケットを持っています同じデータペイロードに転送します。 私の質問はどうすれば適切にできますか?deep copymbuf

答えて

0

私はいくつかの掘り出しをしましたが、私は単純なAPIを見つけませんでした。

このコードは、あなたがget_data_from_mbufmbuf_free

rte_mbuf *myJumboMbuf = m_pPoolMgr->getJPktPool()->getMBuf(); 
for (rte_mbuf *m = (rte_mbuf*)mbuf; m != NULL; m = mbuf_api_next(m)) 
{ 
    uint16_t u16DataLen = mbuf_api_get_data_len(m); 
    char* buffer = rte_pktmbuf_append(myJmboMbuf, u16DataLen); 
    if (!buffer) 
    { 
     mbuf_free(myJmboMbuf); 
     ret = ERR_NO_MEM; 
    } 
    rte_memcpy(buffer, get_data_from_mbuf(m, void*), u16DataLen); 
} 
を実装する必要があり、直接動作しません
に注意してくださいすべてのmbufのセグメントを乗り越えて、新しいMBUFにコピー : これは私が思い付いたものです
関連する問題