1#ifndef _UAPI_LINUX_VIRTIO_RING_H
2#define _UAPI_LINUX_VIRTIO_RING_H
35#include <linux/virtio_types.h>
38#define VRING_DESC_F_NEXT 1
40#define VRING_DESC_F_WRITE 2
42#define VRING_DESC_F_INDIRECT 4
48#define VRING_PACKED_DESC_F_AVAIL 7
49#define VRING_PACKED_DESC_F_USED 15
54#define VRING_USED_F_NO_NOTIFY 1
58#define VRING_AVAIL_F_NO_INTERRUPT 1
61#define VRING_PACKED_EVENT_FLAG_ENABLE 0x0
63#define VRING_PACKED_EVENT_FLAG_DISABLE 0x1
69#define VRING_PACKED_EVENT_FLAG_DESC 0x2
75#define VRING_PACKED_EVENT_F_WRAP_CTR 15
78#define VIRTIO_RING_F_INDIRECT_DESC 28
84#define VIRTIO_RING_F_EVENT_IDX 29
89#define VRING_AVAIL_ALIGN_SIZE 2
90#define VRING_USED_ALIGN_SIZE 4
91#define VRING_DESC_ALIGN_SIZE 16
165#ifndef VIRTIO_RING_NO_LEGACY
193#define vring_used_event(vr) ((vr)->avail->ring[(vr)->num])
194#define vring_avail_event(vr) (*(__virtio16 *)&(vr)->used->ring[(vr)->num])
196static inline void vring_init(
struct vring *vr,
unsigned int num,
void *p,
203 + align-1) & ~(align - 1));
206static inline unsigned vring_size(
unsigned int num,
unsigned long align)
209 + align - 1) & ~(align - 1))
219static inline int vring_need_event(
__u16 event_idx,
__u16 new_idx,
__u16 old)
226 return (
__u16)(new_idx - event_idx - 1) < (
__u16)(new_idx - old);
typedef __attribute__
Definition list_sort.h:12
uint16_t __u16
Definition drm.h:40
uint16_t __le16
Definition kernel.h:33
uint64_t __le64
Definition kernel.h:35
uint32_t __le32
Definition kernel.h:34
__u32 __bitwise __virtio32
Definition virtio_types.h:43
__u64 __bitwise __virtio64
Definition virtio_types.h:44
__u16 __bitwise __virtio16
Definition virtio_types.h:42
Definition virtio_ring.h:111
__virtio16 flags
Definition virtio_ring.h:112
__virtio16 idx
Definition virtio_ring.h:113
__virtio16 ring[]
Definition virtio_ring.h:114
Definition virtio_ring.h:104
__virtio64 addr
Definition virtio_ring.h:105
__virtio16 flags
Definition virtio_ring.h:107
__virtio16 next
Definition virtio_ring.h:108
__virtio32 len
Definition virtio_ring.h:106
Definition virtio_ring.h:229
__le16 off_wrap
Definition virtio_ring.h:231
__le16 flags
Definition virtio_ring.h:233
Definition virtio_ring.h:236
__le64 addr
Definition virtio_ring.h:238
__le16 flags
Definition virtio_ring.h:244
__le32 len
Definition virtio_ring.h:240
__le16 id
Definition virtio_ring.h:242
Definition virtio_ring.h:118
__virtio32 id
Definition virtio_ring.h:120
__virtio32 len
Definition virtio_ring.h:122
Definition virtio_ring.h:128
__virtio16 flags
Definition virtio_ring.h:129
vring_used_elem_t ring[]
Definition virtio_ring.h:131
__virtio16 idx
Definition virtio_ring.h:130
Definition virtio_ring.h:155
vring_used_t * used
Definition virtio_ring.h:162
vring_desc_t * desc
Definition virtio_ring.h:158
vring_avail_t * avail
Definition virtio_ring.h:160
unsigned int num
Definition virtio_ring.h:156
#define VRING_AVAIL_ALIGN_SIZE
Definition virtio_ring.h:89
#define VRING_USED_ALIGN_SIZE
Definition virtio_ring.h:90
#define VRING_DESC_ALIGN_SIZE
Definition virtio_ring.h:91