Commit | Line | Data |
---|---|---|
11447b59 VS |
1 | #- |
2 | # Copyright (c) 2011, Bryan Venteicher <bryanv@daemoninthecloset.org> | |
3 | # All rights reserved. | |
4 | # | |
5 | # Redistribution and use in source and binary forms, with or without | |
6 | # modification, are permitted provided that the following conditions | |
7 | # are met: | |
8 | # 1. Redistributions of source code must retain the above copyright | |
9 | # notice, this list of conditions and the following disclaimer. | |
10 | # 2. Redistributions in binary form must reproduce the above copyright | |
11 | # notice, this list of conditions and the following disclaimer in the | |
12 | # documentation and/or other materials provided with the distribution. | |
13 | # | |
14 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |
15 | # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
16 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
17 | # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |
18 | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
19 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
20 | # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
21 | # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
22 | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
23 | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
24 | # SUCH DAMAGE. | |
25 | # | |
26 | # $FreeBSD: src/sys/dev/virtio/virtio_bus_if.m,v 1.1 2011/11/18 05:43:43 grehan Exp $ | |
27 | ||
28 | #include <sys/bus.h> | |
29 | ||
30 | INTERFACE virtio_bus; | |
31 | ||
32 | HEADER { | |
33 | struct vq_alloc_info; | |
34 | }; | |
35 | ||
36 | METHOD uint64_t negotiate_features { | |
37 | device_t dev; | |
38 | uint64_t child_features; | |
39 | }; | |
40 | ||
41 | METHOD int with_feature { | |
42 | device_t dev; | |
43 | uint64_t feature; | |
44 | }; | |
45 | ||
46 | METHOD int alloc_virtqueues { | |
47 | device_t dev; | |
48 | int flags; | |
49 | int nvqs; | |
50 | struct vq_alloc_info *info; | |
51 | }; | |
52 | HEADER { | |
53 | #define VIRTIO_ALLOC_VQS_DISABLE_MSIX 0x1 | |
54 | }; | |
55 | ||
56 | METHOD int setup_intr { | |
2f1382ca VS |
57 | device_t dev; |
58 | lwkt_serialize_t slz; | |
11447b59 VS |
59 | }; |
60 | ||
61 | METHOD void stop { | |
2f1382ca | 62 | device_t dev; |
11447b59 VS |
63 | }; |
64 | ||
65 | METHOD int reinit { | |
2f1382ca VS |
66 | device_t dev; |
67 | uint64_t features; | |
11447b59 VS |
68 | }; |
69 | ||
70 | METHOD void reinit_complete { | |
2f1382ca | 71 | device_t dev; |
11447b59 VS |
72 | }; |
73 | ||
74 | METHOD void notify_vq { | |
2f1382ca VS |
75 | device_t dev; |
76 | uint16_t queue; | |
11447b59 VS |
77 | }; |
78 | ||
79 | METHOD void read_device_config { | |
2f1382ca VS |
80 | device_t dev; |
81 | bus_size_t offset; | |
82 | void *dst; | |
83 | int len; | |
11447b59 VS |
84 | }; |
85 | ||
86 | METHOD void write_device_config { | |
2f1382ca VS |
87 | device_t dev; |
88 | bus_size_t offset; | |
89 | void *src; | |
90 | int len; | |
11447b59 | 91 | }; |