• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* automatically generated by rust-bindgen 0.70.1 */
2 
3 #[repr(C)]
4 #[derive(Default)]
5 pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
6 impl<T> __IncompleteArrayField<T> {
7     #[inline]
new() -> Self8     pub const fn new() -> Self {
9         __IncompleteArrayField(::std::marker::PhantomData, [])
10     }
11     #[inline]
as_ptr(&self) -> *const T12     pub fn as_ptr(&self) -> *const T {
13         self as *const _ as *const T
14     }
15     #[inline]
as_mut_ptr(&mut self) -> *mut T16     pub fn as_mut_ptr(&mut self) -> *mut T {
17         self as *mut _ as *mut T
18     }
19     #[inline]
as_slice(&self, len: usize) -> &[T]20     pub unsafe fn as_slice(&self, len: usize) -> &[T] {
21         ::std::slice::from_raw_parts(self.as_ptr(), len)
22     }
23     #[inline]
as_mut_slice(&mut self, len: usize) -> &mut [T]24     pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
25         ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
26     }
27 }
28 impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result29     fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
30         fmt.write_str("__IncompleteArrayField")
31     }
32 }
33 pub const VRING_DESC_F_NEXT: u32 = 1;
34 pub const VRING_DESC_F_WRITE: u32 = 2;
35 pub const VRING_DESC_F_INDIRECT: u32 = 4;
36 pub const VRING_PACKED_DESC_F_AVAIL: u32 = 7;
37 pub const VRING_PACKED_DESC_F_USED: u32 = 15;
38 pub const VRING_USED_F_NO_NOTIFY: u32 = 1;
39 pub const VRING_AVAIL_F_NO_INTERRUPT: u32 = 1;
40 pub const VRING_PACKED_EVENT_FLAG_ENABLE: u32 = 0;
41 pub const VRING_PACKED_EVENT_FLAG_DISABLE: u32 = 1;
42 pub const VRING_PACKED_EVENT_FLAG_DESC: u32 = 2;
43 pub const VRING_PACKED_EVENT_F_WRAP_CTR: u32 = 15;
44 pub const VIRTIO_RING_F_INDIRECT_DESC: u32 = 28;
45 pub const VIRTIO_RING_F_EVENT_IDX: u32 = 29;
46 pub const VRING_AVAIL_ALIGN_SIZE: u32 = 2;
47 pub const VRING_USED_ALIGN_SIZE: u32 = 4;
48 pub const VRING_DESC_ALIGN_SIZE: u32 = 16;
49 pub type __u16 = ::std::os::raw::c_ushort;
50 pub type __u32 = ::std::os::raw::c_uint;
51 pub type __u64 = ::std::os::raw::c_ulonglong;
52 pub type __le16 = __u16;
53 pub type __le32 = __u32;
54 pub type __le64 = __u64;
55 pub type __virtio16 = __u16;
56 pub type __virtio32 = __u32;
57 pub type __virtio64 = __u64;
58 #[doc = " struct vring_desc - Virtio ring descriptors,\n 16 bytes long. These can chain together via @next.\n\n @addr: buffer address (guest-physical)\n @len: buffer length\n @flags: descriptor flags\n @next: index of the next descriptor in the chain,\n        if the VRING_DESC_F_NEXT flag is set. We chain unused\n        descriptors via this, too."]
59 #[repr(C)]
60 #[derive(Debug, Default, Copy, Clone, PartialEq)]
61 pub struct vring_desc {
62     pub addr: __virtio64,
63     pub len: __virtio32,
64     pub flags: __virtio16,
65     pub next: __virtio16,
66 }
67 #[allow(clippy::unnecessary_operation, clippy::identity_op)]
68 const _: () = {
69     ["Size of vring_desc"][::std::mem::size_of::<vring_desc>() - 16usize];
70     ["Alignment of vring_desc"][::std::mem::align_of::<vring_desc>() - 8usize];
71     ["Offset of field: vring_desc::addr"][::std::mem::offset_of!(vring_desc, addr) - 0usize];
72     ["Offset of field: vring_desc::len"][::std::mem::offset_of!(vring_desc, len) - 8usize];
73     ["Offset of field: vring_desc::flags"][::std::mem::offset_of!(vring_desc, flags) - 12usize];
74     ["Offset of field: vring_desc::next"][::std::mem::offset_of!(vring_desc, next) - 14usize];
75 };
76 #[repr(C)]
77 #[derive(Debug, Default)]
78 pub struct vring_avail {
79     pub flags: __virtio16,
80     pub idx: __virtio16,
81     pub ring: __IncompleteArrayField<__virtio16>,
82 }
83 #[allow(clippy::unnecessary_operation, clippy::identity_op)]
84 const _: () = {
85     ["Size of vring_avail"][::std::mem::size_of::<vring_avail>() - 4usize];
86     ["Alignment of vring_avail"][::std::mem::align_of::<vring_avail>() - 2usize];
87     ["Offset of field: vring_avail::flags"][::std::mem::offset_of!(vring_avail, flags) - 0usize];
88     ["Offset of field: vring_avail::idx"][::std::mem::offset_of!(vring_avail, idx) - 2usize];
89     ["Offset of field: vring_avail::ring"][::std::mem::offset_of!(vring_avail, ring) - 4usize];
90 };
91 #[repr(C)]
92 #[derive(Debug, Default, Copy, Clone, PartialEq)]
93 pub struct vring_used_elem {
94     pub id: __virtio32,
95     pub len: __virtio32,
96 }
97 #[allow(clippy::unnecessary_operation, clippy::identity_op)]
98 const _: () = {
99     ["Size of vring_used_elem"][::std::mem::size_of::<vring_used_elem>() - 8usize];
100     ["Alignment of vring_used_elem"][::std::mem::align_of::<vring_used_elem>() - 4usize];
101     ["Offset of field: vring_used_elem::id"][::std::mem::offset_of!(vring_used_elem, id) - 0usize];
102     ["Offset of field: vring_used_elem::len"]
103         [::std::mem::offset_of!(vring_used_elem, len) - 4usize];
104 };
105 pub type vring_used_elem_t = vring_used_elem;
106 #[repr(C)]
107 #[derive(Debug, Default)]
108 pub struct vring_used {
109     pub flags: __virtio16,
110     pub idx: __virtio16,
111     pub ring: __IncompleteArrayField<vring_used_elem_t>,
112 }
113 #[allow(clippy::unnecessary_operation, clippy::identity_op)]
114 const _: () = {
115     ["Size of vring_used"][::std::mem::size_of::<vring_used>() - 4usize];
116     ["Alignment of vring_used"][::std::mem::align_of::<vring_used>() - 4usize];
117     ["Offset of field: vring_used::flags"][::std::mem::offset_of!(vring_used, flags) - 0usize];
118     ["Offset of field: vring_used::idx"][::std::mem::offset_of!(vring_used, idx) - 2usize];
119     ["Offset of field: vring_used::ring"][::std::mem::offset_of!(vring_used, ring) - 4usize];
120 };
121 #[doc = " struct vring_desc - Virtio ring descriptors,\n 16 bytes long. These can chain together via @next.\n\n @addr: buffer address (guest-physical)\n @len: buffer length\n @flags: descriptor flags\n @next: index of the next descriptor in the chain,\n        if the VRING_DESC_F_NEXT flag is set. We chain unused\n        descriptors via this, too."]
122 pub type vring_desc_t = vring_desc;
123 pub type vring_avail_t = vring_avail;
124 pub type vring_used_t = vring_used;
125 #[repr(C)]
126 #[derive(Debug, Copy, Clone, PartialEq)]
127 pub struct vring {
128     pub num: ::std::os::raw::c_uint,
129     pub desc: *mut vring_desc_t,
130     pub avail: *mut vring_avail_t,
131     pub used: *mut vring_used_t,
132 }
133 #[allow(clippy::unnecessary_operation, clippy::identity_op)]
134 const _: () = {
135     ["Size of vring"][::std::mem::size_of::<vring>() - 32usize];
136     ["Alignment of vring"][::std::mem::align_of::<vring>() - 8usize];
137     ["Offset of field: vring::num"][::std::mem::offset_of!(vring, num) - 0usize];
138     ["Offset of field: vring::desc"][::std::mem::offset_of!(vring, desc) - 8usize];
139     ["Offset of field: vring::avail"][::std::mem::offset_of!(vring, avail) - 16usize];
140     ["Offset of field: vring::used"][::std::mem::offset_of!(vring, used) - 24usize];
141 };
142 impl Default for vring {
default() -> Self143     fn default() -> Self {
144         let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
145         unsafe {
146             ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
147             s.assume_init()
148         }
149     }
150 }
151 #[repr(C)]
152 #[derive(Debug, Default, Copy, Clone, PartialEq)]
153 pub struct vring_packed_desc_event {
154     pub off_wrap: __le16,
155     pub flags: __le16,
156 }
157 #[allow(clippy::unnecessary_operation, clippy::identity_op)]
158 const _: () = {
159     ["Size of vring_packed_desc_event"][::std::mem::size_of::<vring_packed_desc_event>() - 4usize];
160     ["Alignment of vring_packed_desc_event"]
161         [::std::mem::align_of::<vring_packed_desc_event>() - 2usize];
162     ["Offset of field: vring_packed_desc_event::off_wrap"]
163         [::std::mem::offset_of!(vring_packed_desc_event, off_wrap) - 0usize];
164     ["Offset of field: vring_packed_desc_event::flags"]
165         [::std::mem::offset_of!(vring_packed_desc_event, flags) - 2usize];
166 };
167 #[repr(C)]
168 #[derive(Debug, Default, Copy, Clone, PartialEq)]
169 pub struct vring_packed_desc {
170     pub addr: __le64,
171     pub len: __le32,
172     pub id: __le16,
173     pub flags: __le16,
174 }
175 #[allow(clippy::unnecessary_operation, clippy::identity_op)]
176 const _: () = {
177     ["Size of vring_packed_desc"][::std::mem::size_of::<vring_packed_desc>() - 16usize];
178     ["Alignment of vring_packed_desc"][::std::mem::align_of::<vring_packed_desc>() - 8usize];
179     ["Offset of field: vring_packed_desc::addr"]
180         [::std::mem::offset_of!(vring_packed_desc, addr) - 0usize];
181     ["Offset of field: vring_packed_desc::len"]
182         [::std::mem::offset_of!(vring_packed_desc, len) - 8usize];
183     ["Offset of field: vring_packed_desc::id"]
184         [::std::mem::offset_of!(vring_packed_desc, id) - 12usize];
185     ["Offset of field: vring_packed_desc::flags"]
186         [::std::mem::offset_of!(vring_packed_desc, flags) - 14usize];
187 };
188