History

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.

Michael S. Tsirkin committed 11 years ago

Commit b28e0501 parent b7392d21 file · +7 −0Browse files

Showing the changes to include/uapi/linux (1 of 1 file). Show all

Unified · Split

include/uapi/linux/virtio_ring.h+7−0
@@ -101,6 +101,13 @@ struct vring { · 100 unmodified lines
101101 struct vring_used *used;
102102 };
103103
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+
104111 /* The standard layout for the ring is a continuous chunk of memory which looks
105112 * like this. We assume num is a power of 2.
106113 *