vring_avail->ring が分からない - virtio
virtio も大詰め。あとは vring_aval->idx と vring_avail->ring[n] の役割が分かれば OK 。
guest が host に「このリングを参照してよ」と通知する役割を担っているのは分かるのだが。
論文を読むと
struct vring_avail
{
u16 flags;
u16 idx;
u16 ring[NUM];
};
The available ring consists of a free-running index, an interrupt
suppression flag, and an array of indices into the
descriptor table (representing the heads of buffers).
free-running index ってのがニュアンスが分からない。alc で調べると free-running は「自由継続」という意味らしいのだけど。