首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DPDK mbuf深拷贝

DPDK mbuf深拷贝
EN

Stack Overflow用户
提问于 2017-07-03 20:11:12
回答 1查看 1.3K关注 0票数 0

我对DPDK很陌生。

我有一个包需要重复几次,这意味着我想要深入复制mbuf,这是我找到的唯一的mbuf命令:

代码语言:javascript
复制
static struct rte_mbuf* rte_pktmbuf_clone(struct rte_mbuf *md,struct rte_mempool *mp )  

它似乎不只是通过指向相同的数据有效负载来实现deep-copy。我的问题是如何正确地deep copy mbuf

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-12 16:13:51

我做了一些调查,没有找到任何简单的API。这就是我想出来的:遍历所有mbuf段并将其复制到新的mbuf中。

请注意这段代码不能直接工作,您需要实现get_data_from_mbufmbuf_free

代码语言:javascript
复制
 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);
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44893251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档