后端设备可能会向前端驱动写回数据,device将数据写入buffer的信息保存在used_ring,供驱动读取,但device如何知道哪些buffer可用?
答:virtqueue是一种机制,且在一个device中通常不止1个virtqueue,最简单的device也有transmit virtqueue 和 receive virtqueue(原文:the simplest virtio network device has two virtqueues: the transmit virtqueue and the receive virtqueue)。对于数据的接收,是通过receive virtqueue实现的,driver 通过 receive virtqueue的avail ring 向device提供可用buffer,device接收到数据后,将它写入到buffer中,并刷新used_ring。
未完待续