首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DPDK18.08中的rte_mbuf没有结构rte_pktmbuf pkt

DPDK18.08中的rte_mbuf没有结构rte_pktmbuf pkt
EN

Stack Overflow用户
提问于 2018-12-25 14:08:49
回答 1查看 439关注 0票数 0

升级到DPDK18.08版本后,我会得到下面的编译错误。

代码语言:javascript
复制
error: ‘struct rte_mbuf’ has no member named ‘pkt’
  m->pkt.data = ((char*)m->pkt.data - (BTG_IP_VHL_HL(ip->version_ihl) << 2));
   ^

根据文档,rte_mbuf结构不再有数据包消息缓冲区结构rte_pktmbuf pkt,它反过来保存void*数据,其中包含段缓冲区中数据的起始地址。

代码语言:javascript
复制
struct rte_mbuf {
.
.
.
union {
        struct rte_ctrlmbuf ctrl;
        struct rte_pktmbuf pkt;
    };
}
struct rte_pktmbuf {
    /* valid for any segment */
    struct rte_mbuf *next; 
    void* data;  /**< Start address of data in segment buffer. */

请告诉我rte_mbuf结构的其他字段可以与DPDK18.08版本一起使用,这意味着数据包消息缓冲区中数据的起始地址,以便提前解决此编译error.Thanks。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-25 19:24:42

这是rte_pktmbuf_mtod(m, t)宏。

指向mbuf中数据开始的宏。 返回的指针被转换为t类型。在使用此函数之前,用户必须确保第一个段足够大以容纳其数据。

来源:DPDK API

更新:

要在数据包缓冲区中添加一些数据,有一个专用的函数:rte_pktmbuf_prepend() (这里是DPDK文档)

如果没有旧代码的上下文,很难100%确定,但是看起来这个片段必须重写到:

代码语言:javascript
复制
rte_pktmbuf_prepend(m,
        BTG_IP_VHL_HL(ip->version_ihl) << 2);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53923097

复制
相关文章

相似问题

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