On 09/07/2015 12:20 PM, Stefan Hajnoczi wrote:
On Wed, Sep 02, 2015 at 06:53:44PM +0200, Pierre Morel wrote:+ addr = virtio_queue_get_desc_addr(vdev, n); + size = virtio_queue_get_desc_size(vdev, n); + ptr = vring_map(&vring->mr_desc, addr, size, true); + if (!ptr) { + error_report("Failed to map 0x%16lx byte for vring desc at %16lx", + size, addr); + goto out_err_desc; } - - vring_init(&vring->vr, virtio_queue_get_num(vdev, n), vring_ptr, 4096); + vr->desc = ptr; + + addr = virtio_queue_get_avail_addr(vdev, n); + size = virtio_queue_get_avail_size(vdev, n); + size += sizeof(__virtio16);Please add a comment explaining what these 2 bytes are for.
ok, I send an v5 with this and including the remarks from Greg on read/write access
+ ptr = vring_map(&vring->mr_avail, addr, size, true); + if (!ptr) { + error_report("Failed to map 0x%16lx byte for vring avail at %16lx", + size, addr); + goto out_err_avail; + } + vr->avail = ptr; + + addr = virtio_queue_get_used_addr(vdev, n); + size = virtio_queue_get_used_size(vdev, n); + size += sizeof(__virtio16);Here too.
Here too too
