Message ID | 20240202215332.118728-14-david@redhat.com |
---|---|
State | New |
Headers | show |
Series | libvhost-user: support more memslots and cleanup memslot handling code | expand |
On Fri, Feb 2, 2024 at 4:55 PM David Hildenbrand <david@redhat.com> wrote: > > Let's factor it out to prepare for further changes. > > Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Raphael Norwitz <raphael@enfabrica.net> > --- > subprojects/libvhost-user/libvhost-user.c | 24 +++++++++++------------ > 1 file changed, 12 insertions(+), 12 deletions(-) > > diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c > index 7d8293dc84..febeb2eb89 100644 > --- a/subprojects/libvhost-user/libvhost-user.c > +++ b/subprojects/libvhost-user/libvhost-user.c > @@ -283,6 +283,12 @@ vu_remove_all_mem_regs(VuDev *dev) > dev->nregions = 0; > } > > +static bool > +vu_is_vq_usable(VuDev *dev, VuVirtq *vq) > +{ > + return likely(!dev->broken) && likely(vq->vring.avail); > +} > + > static size_t > get_fd_pagesize(int fd) > { > @@ -2378,8 +2384,7 @@ vu_queue_get_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int *in_bytes, > idx = vq->last_avail_idx; > > total_bufs = in_total = out_total = 0; > - if (unlikely(dev->broken) || > - unlikely(!vq->vring.avail)) { > + if (!vu_is_vq_usable(dev, vq)) { > goto done; > } > > @@ -2494,8 +2499,7 @@ vu_queue_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int in_bytes, > bool > vu_queue_empty(VuDev *dev, VuVirtq *vq) > { > - if (unlikely(dev->broken) || > - unlikely(!vq->vring.avail)) { > + if (!vu_is_vq_usable(dev, vq)) { > return true; > } > > @@ -2534,8 +2538,7 @@ vring_notify(VuDev *dev, VuVirtq *vq) > > static void _vu_queue_notify(VuDev *dev, VuVirtq *vq, bool sync) > { > - if (unlikely(dev->broken) || > - unlikely(!vq->vring.avail)) { > + if (!vu_is_vq_usable(dev, vq)) { > return; > } > > @@ -2860,8 +2863,7 @@ vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz) > unsigned int head; > VuVirtqElement *elem; > > - if (unlikely(dev->broken) || > - unlikely(!vq->vring.avail)) { > + if (!vu_is_vq_usable(dev, vq)) { > return NULL; > } > > @@ -3018,8 +3020,7 @@ vu_queue_fill(VuDev *dev, VuVirtq *vq, > { > struct vring_used_elem uelem; > > - if (unlikely(dev->broken) || > - unlikely(!vq->vring.avail)) { > + if (!vu_is_vq_usable(dev, vq)) { > return; > } > > @@ -3048,8 +3049,7 @@ vu_queue_flush(VuDev *dev, VuVirtq *vq, unsigned int count) > { > uint16_t old, new; > > - if (unlikely(dev->broken) || > - unlikely(!vq->vring.avail)) { > + if (!vu_is_vq_usable(dev, vq)) { > return; > } > > -- > 2.43.0 > >
diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c index 7d8293dc84..febeb2eb89 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -283,6 +283,12 @@ vu_remove_all_mem_regs(VuDev *dev) dev->nregions = 0; } +static bool +vu_is_vq_usable(VuDev *dev, VuVirtq *vq) +{ + return likely(!dev->broken) && likely(vq->vring.avail); +} + static size_t get_fd_pagesize(int fd) { @@ -2378,8 +2384,7 @@ vu_queue_get_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int *in_bytes, idx = vq->last_avail_idx; total_bufs = in_total = out_total = 0; - if (unlikely(dev->broken) || - unlikely(!vq->vring.avail)) { + if (!vu_is_vq_usable(dev, vq)) { goto done; } @@ -2494,8 +2499,7 @@ vu_queue_avail_bytes(VuDev *dev, VuVirtq *vq, unsigned int in_bytes, bool vu_queue_empty(VuDev *dev, VuVirtq *vq) { - if (unlikely(dev->broken) || - unlikely(!vq->vring.avail)) { + if (!vu_is_vq_usable(dev, vq)) { return true; } @@ -2534,8 +2538,7 @@ vring_notify(VuDev *dev, VuVirtq *vq) static void _vu_queue_notify(VuDev *dev, VuVirtq *vq, bool sync) { - if (unlikely(dev->broken) || - unlikely(!vq->vring.avail)) { + if (!vu_is_vq_usable(dev, vq)) { return; } @@ -2860,8 +2863,7 @@ vu_queue_pop(VuDev *dev, VuVirtq *vq, size_t sz) unsigned int head; VuVirtqElement *elem; - if (unlikely(dev->broken) || - unlikely(!vq->vring.avail)) { + if (!vu_is_vq_usable(dev, vq)) { return NULL; } @@ -3018,8 +3020,7 @@ vu_queue_fill(VuDev *dev, VuVirtq *vq, { struct vring_used_elem uelem; - if (unlikely(dev->broken) || - unlikely(!vq->vring.avail)) { + if (!vu_is_vq_usable(dev, vq)) { return; } @@ -3048,8 +3049,7 @@ vu_queue_flush(VuDev *dev, VuVirtq *vq, unsigned int count) { uint16_t old, new; - if (unlikely(dev->broken) || - unlikely(!vq->vring.avail)) { + if (!vu_is_vq_usable(dev, vq)) { return; }
Let's factor it out to prepare for further changes. Signed-off-by: David Hildenbrand <david@redhat.com> --- subprojects/libvhost-user/libvhost-user.c | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)