Lines Matching +full:num +full:- +full:ids

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
38 /* This marks a buffer as write-only (otherwise read-only). */
43 /* The Host uses this in used->flags to advise the Guest: don't kick me
47 /* The Guest uses this in avail->flags to advise the Host: don't
55 /* Address (guest-physical). */
71 /* uint32_t is used here for ids for padding reasons. */
86 unsigned int num; member
94 * When using pre-virtio 1.0 layout, these fall out naturally.
101 * looks like this. We assume num is a power of 2.
105 * struct vring_desc desc[num];
107 * // A ring of available descriptor heads with free-running index.
110 * __u16 available[num];
116 * // A ring of used descriptor heads with free-running index.
119 * struct vring_used_elem used[num];
130 #define vring_used_event(vr) ((vr)->avail->ring[(vr)->num])
131 #define vring_avail_event(vr) (*(uint16_t *)&(vr)->used->ring[(vr)->num])
134 vring_size(unsigned int num, unsigned long align) in vring_size() argument
138 size = num * sizeof(struct vring_desc); in vring_size()
139 size += sizeof(struct vring_avail) + (num * sizeof(uint16_t)) + in vring_size()
141 size = (size + align - 1) & ~(align - 1); in vring_size()
143 (num * sizeof(struct vring_used_elem)) + sizeof(uint16_t); in vring_size()
148 vring_init(struct vring *vr, unsigned int num, uint8_t *p, in vring_init() argument
151 vr->num = num; in vring_init()
152 vr->desc = (struct vring_desc *) p; in vring_init()
153 vr->avail = (struct vring_avail *) (p + in vring_init()
154 num * sizeof(struct vring_desc)); in vring_init()
155 vr->used = (void *) in vring_init()
156 (((unsigned long) &vr->avail->ring[num] + align-1) & ~(align-1)); in vring_init()
170 return (uint16_t)(new_idx - event_idx - 1) < (uint16_t)(new_idx - old); in vring_need_event()