Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
virtio.h
Go to the documentation of this file.
1
#ifndef _LINUX_VIRTIO_H
2
#define _LINUX_VIRTIO_H
3
/* Everything a virtio driver needs to work with any particular virtio
4
* implementation. */
5
#include <linux/types.h>
6
#include <
linux/scatterlist.h
>
7
#include <
linux/spinlock.h
>
8
#include <linux/device.h>
9
#include <
linux/mod_devicetable.h
>
10
#include <
linux/gfp.h
>
11
20
struct
virtqueue
{
21
struct
list_head
list
;
22
void
(*
callback
)(
struct
virtqueue
*vq);
23
const
char
*
name
;
24
struct
virtio_device
*
vdev
;
25
void
*
priv
;
26
};
27
28
int
virtqueue_add_buf
(
struct
virtqueue
*vq,
29
struct
scatterlist
sg
[],
30
unsigned
int
out_num,
31
unsigned
int
in_num,
32
void
*
data
,
33
gfp_t
gfp);
34
35
void
virtqueue_kick
(
struct
virtqueue
*vq);
36
37
bool
virtqueue_kick_prepare
(
struct
virtqueue
*vq);
38
39
void
virtqueue_notify
(
struct
virtqueue
*vq);
40
41
void
*
virtqueue_get_buf
(
struct
virtqueue
*vq,
unsigned
int
*len);
42
43
void
virtqueue_disable_cb
(
struct
virtqueue
*vq);
44
45
bool
virtqueue_enable_cb
(
struct
virtqueue
*vq);
46
47
bool
virtqueue_enable_cb_delayed
(
struct
virtqueue
*vq);
48
49
void
*
virtqueue_detach_unused_buf
(
struct
virtqueue
*vq);
50
51
unsigned
int
virtqueue_get_vring_size
(
struct
virtqueue
*vq);
52
53
int
virtqueue_get_queue_index
(
struct
virtqueue
*vq);
54
65
struct
virtio_device
{
66
int
index
;
67
struct
device
dev
;
68
struct
virtio_device_id
id
;
69
struct
virtio_config_ops
*
config
;
70
struct
list_head
vqs
;
71
/* Note that this is a Linux set_bit-style bitmap. */
72
unsigned
long
features
[1];
73
void
*
priv
;
74
};
75
76
#define dev_to_virtio(dev) container_of(dev, struct virtio_device, dev)
77
int
register_virtio_device
(
struct
virtio_device
*
dev
);
78
void
unregister_virtio_device
(
struct
virtio_device
*
dev
);
79
91
struct
virtio_driver
{
92
struct
device_driver
driver
;
93
const
struct
virtio_device_id
*
id_table
;
94
const
unsigned
int
*
feature_table
;
95
unsigned
int
feature_table_size
;
96
int
(*
probe
)(
struct
virtio_device
*
dev
);
97
void
(*
scan
)(
struct
virtio_device
*
dev
);
98
void
(*
remove
)(
struct
virtio_device
*
dev
);
99
void
(*
config_changed
)(
struct
virtio_device
*
dev
);
100
#ifdef CONFIG_PM
101
int
(*freeze)(
struct
virtio_device
*
dev
);
102
int
(*restore)(
struct
virtio_device
*
dev
);
103
#endif
104
};
105
106
int
register_virtio_driver
(
struct
virtio_driver
*drv);
107
void
unregister_virtio_driver
(
struct
virtio_driver
*drv);
108
#endif
/* _LINUX_VIRTIO_H */
Generated on Thu Jan 10 2013 14:52:49 for Linux Kernel by
1.8.2