Lines Matching refs:vrh
37 static bool getrange_iov(struct vringh *vrh, u64 addr, struct vringh_range *r)
51 static bool getrange_slow(struct vringh *vrh, u64 addr, struct vringh_range *r)
111 static inline int vringh_get_head(struct vringh *vrh, u16 *head)
116 err = get_user(avail_idx, &vrh->vring.avail->idx);
120 if (vrh->last_avail_idx == avail_idx)
124 virtio_rmb(vrh->weak_barriers);
126 i = vrh->last_avail_idx & (vrh->vring.num - 1);
128 err = get_user(*head, &vrh->vring.avail->ring[i]);
132 vrh->last_avail_idx++;
137 bool (*getrange)(struct vringh *vrh,
173 struct vringh vrh;
188 vring_init(&vrh.vring, RINGSIZE, host_map, ALIGN);
189 vringh_init_user(&vrh, features, RINGSIZE, true,
190 vrh.vring.desc, vrh.vring.avail, vrh.vring.used);
202 err = vringh_get_head(&vrh, &head);
205 err = vringh_need_notify_user(&vrh);
226 err = vringh_getdesc_user(&vrh, &riov, &wiov,
230 err = vringh_need_notify_user(&vrh);
239 if (!vringh_notify_enable_user(&vrh))
246 vringh_notify_disable_user(&vrh);
273 err = vringh_complete_user(&vrh, head, written);
278 err = vringh_need_notify_user(&vrh);
443 struct vringh vrh;
453 bool (*getrange)(struct vringh *vrh, u64 addr, struct vringh_range *r);
494 vring_init(&vrh.vring, RINGSIZE, __user_addr_min, ALIGN);
495 vringh_init_user(&vrh, vdev.features, RINGSIZE, true,
496 vrh.vring.desc, vrh.vring.avail, vrh.vring.used);
499 err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
523 err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
558 err = vringh_complete_user(&vrh, head, err);
592 err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
622 err = vringh_complete_multi_user(&vrh, used, 1);
645 err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);
652 assert(vrh.vring.used->idx % RINGSIZE != 0);
653 err = vringh_complete_multi_user(&vrh, used, RINGSIZE);
729 err = vringh_getdesc_user(&vrh, &riov, &wiov, getrange, &head);