virtio-scsi: do not use vring in dataplane
[qemu/ar7.git] / include / hw / virtio / dataplane / vring-accessors.h
blob815c19b6ef0551ae3cf9839cd34a4d4388654bc1
1 #ifndef VRING_ACCESSORS_H
2 #define VRING_ACCESSORS_H
4 #include "standard-headers/linux/virtio_ring.h"
5 #include "hw/virtio/virtio.h"
6 #include "hw/virtio/virtio-access.h"
8 static inline uint16_t vring_get_used_idx(VirtIODevice *vdev, Vring *vring)
10 return virtio_tswap16(vdev, vring->vr.used->idx);
13 static inline void vring_set_used_idx(VirtIODevice *vdev, Vring *vring,
14 uint16_t idx)
16 vring->vr.used->idx = virtio_tswap16(vdev, idx);
19 static inline uint16_t vring_get_avail_idx(VirtIODevice *vdev, Vring *vring)
21 return virtio_tswap16(vdev, vring->vr.avail->idx);
24 static inline uint16_t vring_get_avail_ring(VirtIODevice *vdev, Vring *vring,
25 int i)
27 return virtio_tswap16(vdev, vring->vr.avail->ring[i]);
30 static inline void vring_set_used_ring_id(VirtIODevice *vdev, Vring *vring,
31 int i, uint32_t id)
33 vring->vr.used->ring[i].id = virtio_tswap32(vdev, id);
36 static inline void vring_set_used_ring_len(VirtIODevice *vdev, Vring *vring,
37 int i, uint32_t len)
39 vring->vr.used->ring[i].len = virtio_tswap32(vdev, len);
42 static inline uint16_t vring_get_used_flags(VirtIODevice *vdev, Vring *vring)
44 return virtio_tswap16(vdev, vring->vr.used->flags);
47 static inline uint16_t vring_get_avail_flags(VirtIODevice *vdev, Vring *vring)
49 return virtio_tswap16(vdev, vring->vr.avail->flags);
52 static inline void vring_set_used_flags(VirtIODevice *vdev, Vring *vring,
53 uint16_t flags)
55 vring->vr.used->flags |= virtio_tswap16(vdev, flags);
58 static inline void vring_clear_used_flags(VirtIODevice *vdev, Vring *vring,
59 uint16_t flags)
61 vring->vr.used->flags &= virtio_tswap16(vdev, ~flags);
64 static inline unsigned int vring_get_num(Vring *vring)
66 return vring->vr.num;
69 /* Are there more descriptors available? */
70 static inline bool vring_more_avail(VirtIODevice *vdev, Vring *vring)
72 return vring_get_avail_idx(vdev, vring) != vring->last_avail_idx;
75 #endif