Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | #ifndef LINUX_VIRTIO_H |
3 | #define LINUX_VIRTIO_H |
4 | #include <linux/scatterlist.h> |
5 | #include <linux/kernel.h> |
6 | #include <linux/spinlock.h> |
7 | |
8 | struct device { |
9 | void *parent; |
10 | }; |
11 | |
12 | struct virtio_device { |
13 | struct device dev; |
14 | u64 features; |
15 | struct list_head vqs; |
16 | spinlock_t vqs_list_lock; |
17 | const struct virtio_config_ops *config; |
18 | }; |
19 | |
20 | struct virtqueue { |
21 | struct list_head list; |
22 | void (*callback)(struct virtqueue *vq); |
23 | const char *name; |
24 | struct virtio_device *vdev; |
25 | unsigned int index; |
26 | unsigned int num_free; |
27 | unsigned int num_max; |
28 | void *priv; |
29 | bool reset; |
30 | }; |
31 | |
32 | /* Interfaces exported by virtio_ring. */ |
33 | int virtqueue_add_sgs(struct virtqueue *vq, |
34 | struct scatterlist *sgs[], |
35 | unsigned int out_sgs, |
36 | unsigned int in_sgs, |
37 | void *data, |
38 | gfp_t gfp); |
39 | |
40 | int virtqueue_add_outbuf(struct virtqueue *vq, |
41 | struct scatterlist sg[], unsigned int num, |
42 | void *data, |
43 | gfp_t gfp); |
44 | |
45 | int virtqueue_add_inbuf(struct virtqueue *vq, |
46 | struct scatterlist sg[], unsigned int num, |
47 | void *data, |
48 | gfp_t gfp); |
49 | |
50 | bool virtqueue_kick(struct virtqueue *vq); |
51 | |
52 | void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len); |
53 | |
54 | void virtqueue_disable_cb(struct virtqueue *vq); |
55 | |
56 | bool virtqueue_enable_cb(struct virtqueue *vq); |
57 | bool virtqueue_enable_cb_delayed(struct virtqueue *vq); |
58 | |
59 | void *virtqueue_detach_unused_buf(struct virtqueue *vq); |
60 | struct virtqueue *vring_new_virtqueue(unsigned int index, |
61 | unsigned int num, |
62 | unsigned int vring_align, |
63 | struct virtio_device *vdev, |
64 | bool weak_barriers, |
65 | bool ctx, |
66 | void *pages, |
67 | bool (*notify)(struct virtqueue *vq), |
68 | void (*callback)(struct virtqueue *vq), |
69 | const char *name); |
70 | void vring_del_virtqueue(struct virtqueue *vq); |
71 | |
72 | #endif |
73 |
Warning: This file is not a C or C++ file. It does not have highlighting.