1#ifndef __LINUX_VIRTIO_H__
2#define __LINUX_VIRTIO_H__
6#include <linux/kernel.h>
60#define VIRTIO_F_NOTIFY_ON_EMPTY 24
61#define VIRTIO_RING_F_INDIRECT_DESC 28
62#define VIRTIO_RING_F_EVENT_IDX 29
78#define VIRTIO_DEV_ANY_ID ((unsigned int)-1)
99#define VRING_DESC_F_NEXT 1
100#define VRING_DESC_F_WRITE 2
101#define VRING_DESC_F_INDIRECT 4
328static inline bool is_virtio_device(
struct device*
dev)
360#define module_virtio_driver(drv) \
361 static int __init drv##_init(void) \
363 return register_virtio_driver(&(drv)); \
365 module_init(drv##_init)
422#define virtio_cread(vdev, type, field, ptr) \
425 (char*)(vdev)->config->device_config_base + \
426 offsetof(type, field), \
438 unsigned int offset,
void* buf,
507 unsigned int out_cnt,
552 unsigned int num,
void*
data,
gfp_t gfp);
#define bool
Definition stdbool.h:35
#define index(str, chr)
Definition string.h:66
unsigned short int uint16_t
Definition acefiex.h:162
#define NULL
Definition actypes.h:561
uint32_t __u32
Definition drm.h:42
size_t size_t offset
Definition drm_bridge.h:1299
struct drm_crtc struct drm_plane struct drm_plane const struct drm_crtc_funcs const char * name
Definition drm_crtc.h:1242
const struct device * dev
Definition drm_print.h:519
size_t len
Definition initial.c:23
void virtio_device_register(void)
void virtio_reset_device(void)
void register_virtio_driver(void)
void virtqueue_get_buf(void)
void unregister_virtio_driver(void)
void virtqueue_add_inbuf(void)
void virtqueue_kick(void)
void * data
Definition kthread.h:30
uint64_t u64
Definition kernel.h:17
uint8_t u8
Definition kernel.h:14
unsigned int gfp_t
Definition kernel.h:56
uint32_t u32
Definition kernel.h:16
unsigned int virtqueue_get_vring_size(const struct virtqueue *vq)
struct virtqueue * virtio_find_single_vq(struct virtio_device *vdev, void(*cb)(struct virtqueue *vq), const char *name)
int virtqueue_add_inbuf_cache_clean(struct virtqueue *vq, struct scatterlist *sg, unsigned int num_in, void *data, gfp_t gfp)
int virtio_find_vqs(struct virtio_device *vdev, unsigned nvqs, struct virtqueue **vqs, struct virtqueue_info *vqs_info, void *desc)
void virtio_break_device(struct virtio_device *dev)
void virtio_poll_input_vqs(void)
bool virtqueue_is_broken(const struct virtqueue *vq)
void virtio_del_vqs(struct virtio_device *vdev)
int virtio_input_detect(void)
int virtqueue_add_sgs(struct virtqueue *vq, struct scatterlist *sgs[], unsigned int out_cnt, unsigned int in_cnt, void *data, gfp_t gfp)
void virtqueue_notify(struct virtqueue *vq)
void virtio_rng_detect(void)
int virtqueue_add_outbuf(struct virtqueue *vq, struct scatterlist sg[], unsigned int num, void *data, gfp_t gfp)
void virtio_poll_vqs(void)
void virtqueue_disable_cb(struct virtqueue *vq)
void * virtqueue_detach_unused_buf(struct virtqueue *vq)
bool virtqueue_enable_cb(struct virtqueue *vq)
bool virtqueue_kick_prepare(struct virtqueue *vq)
void virtio_device_ready(struct virtio_device *vdev)
a mapped, reset-and-negotiated modern virtio-pci device. Per-device drivers build their own virtqueue...
Definition virtio.h:222
Definition scatterlist.h:73
void * device_config_base
Definition virtio.h:139
void(* reset)(struct virtio_device *vdev)
Definition virtio.h:121
void(* get_extended_features)(struct virtio_device *vdev, u64 *features)
Definition virtio.h:130
int(* find_vqs)(struct virtio_device *vdev, unsigned nvqs, struct virtqueue **vqs, struct virtqueue_info *vqs_info, void *desc)
Definition virtio.h:122
void(* set_status)(struct virtio_device *vdev, u8 status)
Definition virtio.h:120
u64(* get_features)(struct virtio_device *vdev)
Definition virtio.h:129
int(* disable_vq_and_reset)(struct virtqueue *vq)
Definition virtio.h:136
u8(* get_status)(struct virtio_device *vdev)
Definition virtio.h:119
u32(* generation)(struct virtio_device *vdev)
Definition virtio.h:118
bool(* get_shm_region)(struct virtio_device *vdev, void *region, u8 id)
Definition virtio.h:135
void(* del_vqs)(struct virtio_device *vdev)
Definition virtio.h:127
void(* synchronize_cbs)(struct virtio_device *vdev)
Definition virtio.h:128
int(* enable_vq_after_reset)(struct virtqueue *vq)
Definition virtio.h:137
void(* get)(struct virtio_device *vdev, unsigned offset, void *buf, unsigned len)
Definition virtio.h:116
void(* set)(struct virtio_device *vdev, unsigned offset, const void *buf, unsigned len)
Definition virtio.h:117
int(* set_vq_affinity)(struct virtqueue *vq, const void *cpu_mask)
Definition virtio.h:133
int(* finalize_features)(struct virtio_device *vdev)
Definition virtio.h:131
__u32 vendor
Definition virtio.h:154
__u32 device
Definition virtio.h:153
struct VirtioPCIDevice * au_dev
Definition virtio.h:164
void * priv
Definition virtio.h:163
int index
Definition virtio.h:158
struct device dev
Definition virtio.h:204
struct list_head vqs
Definition virtio.h:205
unsigned char _linux_prefix[0x328]
Definition virtio.h:160
void * drv_data
Definition virtio.h:159
struct virtio_config_ops * config
Definition virtio.h:161
struct virtio_device_id id
Definition virtio.h:203
unsigned char _mid[0x30]
Definition virtio.h:162
int(* restore)(struct virtio_device *vdev)
Definition virtio.h:277
int(* validate)(struct virtio_device *vdev)
Definition virtio.h:263
int(* probe)(struct virtio_device *vdev)
Definition virtio.h:264
unsigned int feature_table_size
Definition virtio.h:260
void(* remove)(struct virtio_device *vdev)
Definition virtio.h:266
void(* scan)(struct virtio_device *vdev)
Definition virtio.h:265
unsigned int feature_table_size_legacy
Definition virtio.h:262
const unsigned int * feature_table_legacy
Definition virtio.h:261
void(* shutdown)(struct virtio_device *vdev)
Definition virtio.h:275
const unsigned int * feature_table
Definition virtio.h:259
int(* freeze)(struct virtio_device *vdev)
Definition virtio.h:276
const struct virtio_device_id * id_table
Definition virtio.h:228
struct device_driver driver
Definition virtio.h:227
void(* config_changed)(struct virtio_device *vdev)
Definition virtio.h:267
const char * name
Definition virtio.h:109
bool ctx
Definition virtio.h:111
void(* callback)(struct virtqueue *vq)
Definition virtio.h:110
void * cookies[256]
Definition virtio.h:292
struct list_head list
Definition virtio.h:316
unsigned char _linux_prefix[32]
Definition virtio.h:281
void(* callback)(struct virtqueue *vq)
Definition virtio.h:291
struct VirtqUsedHdr * used
Definition virtio.h:285
const char * name
Definition virtio.h:290
uint16_t num_free
Definition virtio.h:287
uint16_t event_idx_write
Definition virtio.h:293
uint16_t index
Definition virtio.h:288
struct VirtqAvailHdr * avail
Definition virtio.h:284
uint16_t free_head
Definition virtio.h:286
bool broken
Definition virtio.h:303
struct virtio_device * vdev
Definition virtio.h:282
uint16_t qsize
Definition virtio.h:289
struct VirtqDesc * desc
Definition virtio.h:283