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
101 struct vring_used *used;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/* The standard layout for the ring is a continuous chunk of memory which looks111/* The standard layout for the ring is a continuous chunk of memory which looks
105 * like this. We assume num is a power of 2.112 * like this. We assume num is a power of 2.
106 *113 *