Files
kernel/tools/virtio/linux/virtio.h
T

69 lines
1.8 KiB
C
Raw Normal View History

2010-11-29 19:16:37 +02:00
#ifndef LINUX_VIRTIO_H
#define LINUX_VIRTIO_H
2013-03-18 13:22:19 +10:30
#include <linux/scatterlist.h>
#include <linux/kernel.h>
2010-11-29 19:16:37 +02:00
/* TODO: empty stubs for now. Broken but enough for virtio_ring.c */
#define list_add_tail(a, b) do {} while (0)
#define list_del(a) do {} while (0)
2014-12-15 23:47:07 +02:00
#define list_for_each_entry(a, b, c) while (0)
2010-11-29 19:16:37 +02:00
/* end of stubs */
struct virtio_device {
void *dev;
2014-10-07 16:39:43 +02:00
u64 features;
2010-11-29 19:16:37 +02:00
};
struct virtqueue {
/* TODO: commented as list macros are empty stubs for now.
* Broken but enough for virtio_ring.c
* struct list_head list; */
void (*callback)(struct virtqueue *vq);
const char *name;
struct virtio_device *vdev;
2013-03-18 13:22:18 +10:30
unsigned int index;
unsigned int num_free;
2010-11-29 19:16:37 +02:00
void *priv;
};
/* Interfaces exported by virtio_ring. */
int virtqueue_add_sgs(struct virtqueue *vq,
struct scatterlist *sgs[],
unsigned int out_sgs,
unsigned int in_sgs,
void *data,
gfp_t gfp);
int virtqueue_add_outbuf(struct virtqueue *vq,
struct scatterlist sg[], unsigned int num,
void *data,
gfp_t gfp);
int virtqueue_add_inbuf(struct virtqueue *vq,
struct scatterlist sg[], unsigned int num,
void *data,
gfp_t gfp);
bool virtqueue_kick(struct virtqueue *vq);
2010-11-29 19:16:37 +02:00
void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len);
void virtqueue_disable_cb(struct virtqueue *vq);
bool virtqueue_enable_cb(struct virtqueue *vq);
2012-04-16 10:11:12 -04:00
bool virtqueue_enable_cb_delayed(struct virtqueue *vq);
2010-11-29 19:16:37 +02:00
void *virtqueue_detach_unused_buf(struct virtqueue *vq);
2013-03-18 13:22:18 +10:30
struct virtqueue *vring_new_virtqueue(unsigned int index,
unsigned int num,
2010-11-29 19:16:37 +02:00
unsigned int vring_align,
struct virtio_device *vdev,
2012-01-12 15:44:42 +10:30
bool weak_barriers,
2010-11-29 19:16:37 +02:00
void *pages,
bool (*notify)(struct virtqueue *vq),
2010-11-29 19:16:37 +02:00
void (*callback)(struct virtqueue *vq),
const char *name);
void vring_del_virtqueue(struct virtqueue *vq);
#endif