root/tools/virtio/linux/virtio.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
   7 struct device {
   8         void *parent;
   9 };
  10 
  11 struct virtio_device {
  12         struct device dev;
  13         u64 features;
  14 };
  15 
  16 struct virtqueue {
  17         /* TODO: commented as list macros are empty stubs for now.
  18          * Broken but enough for virtio_ring.c
  19          * struct list_head list; */
  20         void (*callback)(struct virtqueue *vq);
  21         const char *name;
  22         struct virtio_device *vdev;
  23         unsigned int index;
  24         unsigned int num_free;
  25         void *priv;
  26 };
  27 
  28 /* Interfaces exported by virtio_ring. */
  29 int virtqueue_add_sgs(struct virtqueue *vq,
  30                       struct scatterlist *sgs[],
  31                       unsigned int out_sgs,
  32                       unsigned int in_sgs,
  33                       void *data,
  34                       gfp_t gfp);
  35 
  36 int virtqueue_add_outbuf(struct virtqueue *vq,
  37                          struct scatterlist sg[], unsigned int num,
  38                          void *data,
  39                          gfp_t gfp);
  40 
  41 int virtqueue_add_inbuf(struct virtqueue *vq,
  42                         struct scatterlist sg[], unsigned int num,
  43                         void *data,
  44                         gfp_t gfp);
  45 
  46 bool virtqueue_kick(struct virtqueue *vq);
  47 
  48 void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len);
  49 
  50 void virtqueue_disable_cb(struct virtqueue *vq);
  51 
  52 bool virtqueue_enable_cb(struct virtqueue *vq);
  53 bool virtqueue_enable_cb_delayed(struct virtqueue *vq);
  54 
  55 void *virtqueue_detach_unused_buf(struct virtqueue *vq);
  56 struct virtqueue *vring_new_virtqueue(unsigned int index,
  57                                       unsigned int num,
  58                                       unsigned int vring_align,
  59                                       struct virtio_device *vdev,
  60                                       bool weak_barriers,
  61                                       bool ctx,
  62                                       void *pages,
  63                                       bool (*notify)(struct virtqueue *vq),
  64                                       void (*callback)(struct virtqueue *vq),
  65                                       const char *name);
  66 void vring_del_virtqueue(struct virtqueue *vq);
  67 
  68 #endif

/* [<][>][^][v][top][bottom][index][help] */