forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
67 lines
1.6 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef LINUX_VIRTIO_H |
|
#define LINUX_VIRTIO_H |
|
#include <linux/scatterlist.h> |
|
#include <linux/kernel.h> |
|
|
|
struct device { |
|
void *parent; |
|
}; |
|
|
|
struct virtio_device { |
|
struct device dev; |
|
u64 features; |
|
struct list_head vqs; |
|
}; |
|
|
|
struct virtqueue { |
|
struct list_head list; |
|
void (*callback)(struct virtqueue *vq); |
|
const char *name; |
|
struct virtio_device *vdev; |
|
unsigned int index; |
|
unsigned int num_free; |
|
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); |
|
|
|
void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len); |
|
|
|
void virtqueue_disable_cb(struct virtqueue *vq); |
|
|
|
bool virtqueue_enable_cb(struct virtqueue *vq); |
|
bool virtqueue_enable_cb_delayed(struct virtqueue *vq); |
|
|
|
void *virtqueue_detach_unused_buf(struct virtqueue *vq); |
|
struct virtqueue *vring_new_virtqueue(unsigned int index, |
|
unsigned int num, |
|
unsigned int vring_align, |
|
struct virtio_device *vdev, |
|
bool weak_barriers, |
|
bool ctx, |
|
void *pages, |
|
bool (*notify)(struct virtqueue *vq), |
|
void (*callback)(struct virtqueue *vq), |
|
const char *name); |
|
void vring_del_virtqueue(struct virtqueue *vq); |
|
|
|
#endif
|
|
|