KVM-Qemu分析之Virtqueue
发布时间:2021-04-20 17:20:10 所属栏目:外闻 来源:互联网
导读:常Virtio设备操作Virtqueue时,都是通过struct virtqueue结构体,这个可以理解成对外的一个接口,而Virtqueue机制的实现依赖于struct vring_virtqueue结构体; Virtqueue有三个核心的数据结构,由struct vring负责组织: struct vring_desc:描述符表,每一项
这么看,当然是有点不太直观,所以,下图来了:
3. 流程分析驱动需要把数据发送给设备时,流程如上图所示:①A表示分配一个Buffer并添加到Virtqueue中,①B表示从Used队列中获取一个Buffer,这两种中选择一种方式; ②表示将Data拷贝到Buffer中,用于传送; ③表示更新Avail队列中的描述符索引值,注意,驱动中需要执行memory barrier操作,确保Device能看到正确的值; ④与⑤表示Driver通知Device来取数据; ⑥表示Device从Avail队列中获取到描述符索引值; ⑦表示将描述符索引对应的地址中的数据取出来; ⑧表示Device更新Used队列中的描述符索引; ⑨与⑩表示Device通知Driver数据已经取完了;
3.2 接收 (编辑:潍坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


