Commit b28e0506fafd9c987bba7a6a71ea02a37fcabdea

Authored by Michael S. Tsirkin
1 parent b7392d2247

virtio_ring: document alignment requirements

Host needs to know vring element alignment requirements:
simply doing alignof on structures doesn't work reliably: on some
platforms gcc has alignof(uint32_t) == 2.

Add macros for alignment as specified in virtio 1.0 cs01,
export them to userspace as well.

Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

Showing 1 changed file with 7 additions and 0 deletions Side-by-side Diff

include/uapi/linux/virtio_ring.h
... ... @@ -101,6 +101,13 @@
101 101 struct vring_used *used;
102 102 };
103 103  
  104 +/* Alignment requirements for vring elements.
  105 + * When using pre-virtio 1.0 layout, these fall out naturally.
  106 + */
  107 +#define VRING_AVAIL_ALIGN_SIZE 2
  108 +#define VRING_USED_ALIGN_SIZE 4
  109 +#define VRING_DESC_ALIGN_SIZE 16
  110 +
104 111 /* The standard layout for the ring is a continuous chunk of memory which looks
105 112 * like this. We assume num is a power of 2.
106 113 *