Lines Matching refs:vr
109 static void vring_init(VRing *vr, VqInfo *info) in vring_init() argument
114 vr->id = info->index; in vring_init()
115 vr->num = info->num; in vring_init()
116 vr->desc = p; in vring_init()
117 vr->avail = p + info->num * sizeof(VRingDesc); in vring_init()
118 vr->used = (void *)(((unsigned long)&vr->avail->ring[info->num] in vring_init()
122 vr->avail->flags = 0; in vring_init()
123 vr->avail->idx = 0; in vring_init()
126 vr->used->flags = VRING_USED_F_NO_NOTIFY; in vring_init()
127 vr->used->idx = 0; in vring_init()
128 vr->used_idx = 0; in vring_init()
129 vr->next_idx = 0; in vring_init()
130 vr->cookie = 0; in vring_init()
132 debug_print_addr("init vr", vr); in vring_init()
135 bool vring_notify(VRing *vr) in vring_notify() argument
137 vr->cookie = virtio_notify(vr->schid, vr->id, vr->cookie); in vring_notify()
138 return vr->cookie >= 0; in vring_notify()
141 void vring_send_buf(VRing *vr, void *p, int len, int flags) in vring_send_buf() argument
145 vr->avail->ring[vr->avail->idx % vr->num] = vr->next_idx; in vring_send_buf()
148 vr->desc[vr->next_idx].addr = (unsigned long)p; in vring_send_buf()
149 vr->desc[vr->next_idx].len = len; in vring_send_buf()
150 vr->desc[vr->next_idx].flags = flags & ~VRING_HIDDEN_IS_CHAIN; in vring_send_buf()
151 vr->desc[vr->next_idx].next = vr->next_idx; in vring_send_buf()
152 vr->desc[vr->next_idx].next++; in vring_send_buf()
153 vr->next_idx++; in vring_send_buf()
157 vr->avail->idx++; in vring_send_buf()
161 int vr_poll(VRing *vr) in vr_poll() argument
163 if (vr->used->idx == vr->used_idx) { in vr_poll()
164 vring_notify(vr); in vr_poll()
169 vr->used_idx = vr->used->idx; in vr_poll()
170 vr->next_idx = 0; in vr_poll()
171 vr->desc[0].len = 0; in vr_poll()
172 vr->desc[0].flags = 0; in vr_poll()
205 VRing *vr = &vdev->vrings[vqid]; in virtio_run() local
209 vring_send_buf(vr, cmd[i].data, cmd[i].size, in virtio_run()
214 if (drain_irqs(vr->schid)) { in virtio_run()