blob: 63c6ea199519305b907c34dc42d82290ec57bb07 [file] [log] [blame]
Rusty Russell0a8a69d2007-10-22 11:03:40 +10001#ifndef _LINUX_VIRTIO_RING_H
2#define _LINUX_VIRTIO_RING_H
Rusty Russell0a8a69d2007-10-22 11:03:40 +10003
Rusty Russell0a8a69d2007-10-22 11:03:40 +10004#include <linux/irqreturn.h>
David Howells607ca462012-10-13 10:46:48 +01005#include <uapi/linux/virtio_ring.h>
6
Rusty Russell0a8a69d2007-10-22 11:03:40 +10007struct virtio_device;
8struct virtqueue;
9
Jason Wang17bb6d42012-08-28 13:54:13 +020010struct virtqueue *vring_new_virtqueue(unsigned int index,
11 unsigned int num,
Rusty Russell87c7d572008-12-30 09:26:03 -060012 unsigned int vring_align,
Rusty Russell0a8a69d2007-10-22 11:03:40 +100013 struct virtio_device *vdev,
Rusty Russell7b21e342012-01-12 15:44:42 +103014 bool weak_barriers,
Rusty Russell0a8a69d2007-10-22 11:03:40 +100015 void *pages,
16 void (*notify)(struct virtqueue *vq),
Rusty Russell9499f5e2009-06-12 22:16:35 -060017 void (*callback)(struct virtqueue *vq),
18 const char *name);
Rusty Russell0a8a69d2007-10-22 11:03:40 +100019void vring_del_virtqueue(struct virtqueue *vq);
Rusty Russelle34f8722008-07-25 12:06:13 -050020/* Filter out transport-specific feature bits. */
21void vring_transport_features(struct virtio_device *vdev);
Rusty Russell0a8a69d2007-10-22 11:03:40 +100022
23irqreturn_t vring_interrupt(int irq, void *_vq);
Rusty Russell0a8a69d2007-10-22 11:03:40 +100024#endif /* _LINUX_VIRTIO_RING_H */