我对QEMU源代码中存在的两个模拟设备hw/net/virtio-net.c和hw/virtio/virtio-net-pci.c感到有点困惑。它看起来是virio-net-pci.c是基于virtio规范的NIC仿真,但是我没有得到hw/net/virtio-net.c是用来做什么的?
除此之外,我还看到了hw/net/vhost_net.c,但不明白在什么情况下使用了这种方法?
发布于 2021-01-04 23:32:50
在概念上,QEMU实现中的virtio设备分为两部分:“传输”和“后端”。“后端”是执行实际工作的部分(网络、块设备、随机数生成器等);“传输”是与来宾的接口(PCI、MMIO、s390 CCW.)。这允许我们以多种不同的方式提供virtio设备,而不需要重复代码。
hw/net/virtio-net.c实现'net‘后端。hw/virtio/virtio-pci.c实现PCI传输。hw/ virtio /virtio-net-pci.c实现了一个PCI设备,该设备提供到virtio后端设备的PCI传输(并且是一个相当小的文件,因为它只是将公共传输和公共后端代码粘合在一起)。
不出所料,hw/net/vhost_net.c是RedHat的博客文章,KagurazakaKotori给了你一个链接中描述的vhost-net支持的实现。您可以为来宾传递一个virtio网络设备,而不必使用vhost-net -您可以使用任何QEMU网络后端。
https://stackoverflow.com/questions/65550766
复制相似问题