1 个数据包=1 buf_vector1 数据包=M mbuf1 数据包=N desc
这里N=num_buffers。如果协商了VIRTIO_NET_FMRG_RXBUF,则num_buffers=1(根据消息的实际长度确定)。如果VIRTIO_NET_FMRG_RXBUF 未协商,则num_buffers=1。
这里M是根据消息的实际长度来确定的。
buf_vector数组的作用
struct buf_vertor数组用于mbuf和desc之间的相互转换。 mbuf 和desc 都通过fill_buf_vec_split(packed) 函数转换为buf_vector[] 数组:
Guest vm tx 方向:mbuf - buf_vector - desc,通过mbuf_to_desc 函数实现。
Guest vm rx方向:desc - buf_vector - mbuf,通过copy_desc_to_mbuf函数实现。
mbuf_to_desc 函数:在消息传递给驱动程序之前,会要求用户将消息串入mbuf 链(每个链一条消息),然后将其传递给驱动程序。
标签:
用户评论
这篇文章讲得真详细,rte_mbuf和vring_desc的关系我一直搞不清楚,现在终于明白了。
有7位网友表示赞同!
看了这个标题,我还以为会很难懂呢,没想到解释得这么清楚,太感谢作者了!
有7位网友表示赞同!
rte_mbuf和vring_desc的关系,这个点真的很关键,对网络编程有很大帮助。
有7位网友表示赞同!
虽然看不懂,但还是想试试理解这两者的关系,希望以后能用到。
有20位网友表示赞同!
作者真是用心良苦,把这么复杂的知识点解释得这么通俗易懂。
有20位网友表示赞同!
这篇文章让我对rte_mbuf和vring_desc有了新的认识,感谢分享!
有9位网友表示赞同!
这个关系好复杂啊,看了还是有点晕,希望能有人帮忙解答。
有12位网友表示赞同!
读完这篇文章,感觉自己对网络编程的理解又深了一层。
有6位网友表示赞同!
rte_mbuf和vring_desc的关系,这个标题让我想起了之前的一个难题,现在终于解决了。
有14位网友表示赞同!
作者真是高手,把这么专业的知识点讲得那么接地气,太佩服了。
有12位网友表示赞同!
对于初学者来说,这篇文章可能还是有点难度,希望能有更简单的解释。
有19位网友表示赞同!
这篇文章让我对rte_mbuf和vring_desc有了更深入的理解,真是受益匪浅。
有9位网友表示赞同!
虽然我不是专业人士,但觉得这篇文章很有用,希望能多写一些类似的文章。
有8位网友表示赞同!
rte_mbuf和vring_desc的关系,这个标题让我想到了以前的项目,现在终于找到答案了。
有9位网友表示赞同!
这篇文章让我对网络编程有了新的认识,感觉自己的知识体系又完善了。
有7位网友表示赞同!
作者解释得很到位,但我觉得可以加上一些实例,这样更容易理解。
有11位网友表示赞同!
rte_mbuf和vring_desc的关系,这个点我之前一直没搞明白,现在终于豁然开朗了。
有5位网友表示赞同!
这篇文章让我对网络编程有了新的认识,感觉自己的技术水平又提高了。
有8位网友表示赞同!
看了这篇文章,我对rte_mbuf和vring_desc的关系有了更清晰的认识,感谢作者的分享。
有8位网友表示赞同!
这篇文章让我对网络编程有了更深入的理解,感觉自己的学习方向更明确了。
有9位网友表示赞同!