Page MenuHomeFreeBSD

D32371.id96480.diff
No OneTemporary

D32371.id96480.diff

Index: sys/dev/virtio/virtqueue.h
===================================================================
--- sys/dev/virtio/virtqueue.h
+++ sys/dev/virtio/virtqueue.h
@@ -92,7 +92,9 @@
int virtqueue_size(struct virtqueue *vq);
int virtqueue_nfree(struct virtqueue *vq);
int virtqueue_nused(struct virtqueue *vq);
-void virtqueue_notify(struct virtqueue *vq);
+bool vq_ring_must_notify_host(struct virtqueue *vq);
+bool vq_ring_notify_host(struct virtqueue *vq);
+bool virtqueue_notify(struct virtqueue *vq);
void virtqueue_dump(struct virtqueue *vq);
int virtqueue_enqueue(struct virtqueue *vq, void *cookie,
Index: sys/dev/virtio/virtqueue.c
===================================================================
--- sys/dev/virtio/virtqueue.c
+++ sys/dev/virtio/virtqueue.c
@@ -134,8 +134,6 @@
static void vq_ring_enqueue_indirect(struct virtqueue *, void *,
struct sglist *, int, int);
static int vq_ring_enable_interrupt(struct virtqueue *, uint16_t);
-static int vq_ring_must_notify_host(struct virtqueue *);
-static void vq_ring_notify_host(struct virtqueue *);
static void vq_ring_free_chain(struct virtqueue *, uint16_t);
SDT_PROVIDER_DEFINE(virtqueue);
@@ -434,7 +432,7 @@
return (vq->vq_free_cnt == 0);
}
-void
+bool
virtqueue_notify(struct virtqueue *vq)
{
@@ -444,6 +442,8 @@
if (vq_ring_must_notify_host(vq))
vq_ring_notify_host(vq);
vq->vq_queued_cnt = 0;
+ /* Unlike the Linux API, we currently never report failure. */
+ return true;
}
int
@@ -820,7 +820,7 @@
return (0);
}
-static int
+bool
vq_ring_must_notify_host(struct virtqueue *vq)
{
uint16_t new_idx, prev_idx, event_idx, flags;
@@ -837,12 +837,13 @@
return ((flags & vq_gtoh16(vq, VRING_USED_F_NO_NOTIFY)) == 0);
}
-static void
+bool
vq_ring_notify_host(struct virtqueue *vq)
{
-
+ /* TODO: return success/failure */
VIRTIO_BUS_NOTIFY_VQ(vq->vq_dev, vq->vq_queue_index,
vq->vq_notify_offset);
+ return true;
}
static void

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 22, 10:47 AM (4 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17703613
Default Alt Text
D32371.id96480.diff (1 KB)

Event Timeline