From bf1ef0dc5a1843e2c1fcfcd52dd2922fb0dbdba9 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Mon, 12 Sep 2022 06:41:59 +0000 Subject: [PATCH 1/2] virtio-bindings: re-add lost Cargo.toml features These were lost when virtio-bindings was imported into the vm-virtio repository. Without these features declared, crates that depended on these features wouldn't compile. Signed-off-by: Alyssa Ross --- crates/virtio-bindings/Cargo.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/virtio-bindings/Cargo.toml b/crates/virtio-bindings/Cargo.toml index a44c8b65..79896b05 100644 --- a/crates/virtio-bindings/Cargo.toml +++ b/crates/virtio-bindings/Cargo.toml @@ -9,6 +9,8 @@ edition = "2021" keywords = ["virtio"] license = "BSD-3-Clause OR Apache-2.0" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +virtio-v4_14_0 = [] +virtio-v5_0_0 = [] [dependencies] From f98465e800517c6d1ee57c71c6380475f367499b Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 31 Aug 2022 16:40:55 +0000 Subject: [PATCH 2/2] virtio-bindings: drop bindings for older kernels As pointed out by Sebastien Boeuf [1], the kernel headers are backwards compatible, so there's no need to maintain the bindings for multiple kernel versions. And doing so will make updating the bindings easier, as it won't require adding a new feature each time. It's unfortunately not possible for us to emit a deprecation warning for the features, as in Rust deprecation warnings have to be applied to functions/constants/etc. (not modules or re-exports [2]), so any deprecation warning in this crate would mean editing the generated bindings files. But it doesn't really do any harm to keep the feature declarations in the Cargo.toml around indefinitely. [1]: https://github.com/rust-vmm/virtio-bindings/issues/35#issue-1128264449 [2]: https://github.com/rust-lang/rust/issues/30827 Signed-off-by: Alyssa Ross --- crates/virtio-bindings/CONTRIBUTING.md | 30 +- crates/virtio-bindings/Cargo.toml | 2 + crates/virtio-bindings/README.md | 5 +- .../src/bindings_v4_14_0/mod.rs | 11 - .../src/bindings_v4_14_0/virtio_blk.rs | 487 ------------ .../src/bindings_v4_14_0/virtio_net.rs | 744 ------------------ .../src/bindings_v4_14_0/virtio_ring.rs | 555 ------------- .../src/bindings_v5_0_0/mod.rs | 13 - crates/virtio-bindings/src/lib.rs | 27 +- .../src/{bindings_v5_0_0 => }/virtio_blk.rs | 0 .../src/{bindings_v5_0_0 => }/virtio_net.rs | 0 .../src/{bindings_v5_0_0 => }/virtio_ring.rs | 0 12 files changed, 17 insertions(+), 1857 deletions(-) delete mode 100644 crates/virtio-bindings/src/bindings_v4_14_0/mod.rs delete mode 100644 crates/virtio-bindings/src/bindings_v4_14_0/virtio_blk.rs delete mode 100644 crates/virtio-bindings/src/bindings_v4_14_0/virtio_net.rs delete mode 100644 crates/virtio-bindings/src/bindings_v4_14_0/virtio_ring.rs delete mode 100644 crates/virtio-bindings/src/bindings_v5_0_0/mod.rs rename crates/virtio-bindings/src/{bindings_v5_0_0 => }/virtio_blk.rs (100%) rename crates/virtio-bindings/src/{bindings_v5_0_0 => }/virtio_net.rs (100%) rename crates/virtio-bindings/src/{bindings_v5_0_0 => }/virtio_ring.rs (100%) diff --git a/crates/virtio-bindings/CONTRIBUTING.md b/crates/virtio-bindings/CONTRIBUTING.md index 755eaa61..18c4653d 100644 --- a/crates/virtio-bindings/CONTRIBUTING.md +++ b/crates/virtio-bindings/CONTRIBUTING.md @@ -17,29 +17,18 @@ repository on your machine: git clone https://github.com/torvalds/linux.git ``` -## Example for adding a new version +## Example for updating to a new kernel version For this example we assume that you have both linux and virtio-bindings repositories in your root. ```bash -# Step 1: Create a new module using a name with format "bindings_vVERSION" in -# src/ -cd vm-virtio/crates/virtio-bindings -mkdir src/bindings_v5_0_0 -cd ~ - -# Step 2: Copy the "mod.rs" file from the directory of an already existing -# version module to the one we've just created. -cd vm-virtio/crates/virtio-bindings/src -cp bindings_v4_14_0/mod.rs bindings_v5_0_0/mod.rs - # linux is the repository that you cloned at the previous step. cd linux -# Step 3: Checkout the version you want to generate the bindings for. +# Step 1: Checkout the version you want to generate the bindings for. git checkout v5.0 -# Step 4: Generate the bindings from the kernel headers. We need to +# Step 2: Generate the bindings from the kernel headers. We need to # generate a file for each one of the virtio headers we're interested on. # For the moment, we're generating "virtio_blk", "virtio_net" and # "virtio_ring". Feel free to add additional header files if you need them @@ -55,16 +44,5 @@ done cd ~ # Step 6: Copy the generated files to the new version module. -cp linux/v5_0_headers/*.rs vm-virtio/crates/virtio-bindings/src/bindings_v5_0_0 -``` - -Once this is done, edit the generated files to add the proper license header, -and add the new version module to `vm-virtio/crates/virtio-bindings/lib.rs`. If -this version is newer than the others already present, make this version the -default one by getting it imported when there isn't any other version specified -as a feature: - -```rust -#[cfg(all(not(feature = "virtio-v4_14_0"), not(feature = "virtio-v5_0_0")))] -pub use super::bindings_v5_0_0::*; +cp linux/v5_0_headers/*.rs vm-virtio/crates/virtio-bindings/src ``` diff --git a/crates/virtio-bindings/Cargo.toml b/crates/virtio-bindings/Cargo.toml index 79896b05..8d7de2a4 100644 --- a/crates/virtio-bindings/Cargo.toml +++ b/crates/virtio-bindings/Cargo.toml @@ -10,6 +10,8 @@ keywords = ["virtio"] license = "BSD-3-Clause OR Apache-2.0" [features] +# Kernel version features are deprecated and no longer have any effect, +# as the kernel headers are backwards compatible. virtio-v4_14_0 = [] virtio-v5_0_0 = [] diff --git a/crates/virtio-bindings/README.md b/crates/virtio-bindings/README.md index 23ce04e2..1337c0f5 100644 --- a/crates/virtio-bindings/README.md +++ b/crates/virtio-bindings/README.md @@ -4,13 +4,10 @@ Rust FFI bindings to virtio generated using [bindgen](https://crates.io/crates/b # Usage Add this to your `Cargo.toml`: ```toml -virtio-bindings = { version = "0.1", features = ["virtio-v5_0_0"]} +virtio-bindings = "0.1" ``` You can then import the bindings where you need them. As an example, to grab the bindings for virtio-blk, you can do: ```rust use virtio_bindings::bindings::virtio_blk::*; ``` -In the `virtio-bindings` crate each feature maps to exactly one Linux version as follows: -- `virtio-v4_14_0` contains the bindings for the Linux kernel version 4.14 -- `virtio-v5_0_0` contains the bindings for the Linux kernel version 5.0 diff --git a/crates/virtio-bindings/src/bindings_v4_14_0/mod.rs b/crates/virtio-bindings/src/bindings_v4_14_0/mod.rs deleted file mode 100644 index 65cabd6e..00000000 --- a/crates/virtio-bindings/src/bindings_v4_14_0/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2019 Red Hat, Inc. All Rights Reserved. -// SPDX-License-Identifier: (BSD-3-Clause OR Apache-2.0) - -#![allow(clippy::all)] -#![allow(non_upper_case_globals)] -#![allow(non_camel_case_types)] -#![allow(non_snake_case)] - -pub mod virtio_blk; -pub mod virtio_net; -pub mod virtio_ring; diff --git a/crates/virtio-bindings/src/bindings_v4_14_0/virtio_blk.rs b/crates/virtio-bindings/src/bindings_v4_14_0/virtio_blk.rs deleted file mode 100644 index 8edae9ca..00000000 --- a/crates/virtio-bindings/src/bindings_v4_14_0/virtio_blk.rs +++ /dev/null @@ -1,487 +0,0 @@ -/* automatically generated by rust-bindgen */ - -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const VIRTIO_ID_NET: u32 = 1; -pub const VIRTIO_ID_BLOCK: u32 = 2; -pub const VIRTIO_ID_CONSOLE: u32 = 3; -pub const VIRTIO_ID_RNG: u32 = 4; -pub const VIRTIO_ID_BALLOON: u32 = 5; -pub const VIRTIO_ID_RPMSG: u32 = 7; -pub const VIRTIO_ID_SCSI: u32 = 8; -pub const VIRTIO_ID_9P: u32 = 9; -pub const VIRTIO_ID_RPROC_SERIAL: u32 = 11; -pub const VIRTIO_ID_CAIF: u32 = 12; -pub const VIRTIO_ID_GPU: u32 = 16; -pub const VIRTIO_ID_INPUT: u32 = 18; -pub const VIRTIO_ID_VSOCK: u32 = 19; -pub const VIRTIO_ID_CRYPTO: u32 = 20; -pub const VIRTIO_CONFIG_S_ACKNOWLEDGE: u32 = 1; -pub const VIRTIO_CONFIG_S_DRIVER: u32 = 2; -pub const VIRTIO_CONFIG_S_DRIVER_OK: u32 = 4; -pub const VIRTIO_CONFIG_S_FEATURES_OK: u32 = 8; -pub const VIRTIO_CONFIG_S_NEEDS_RESET: u32 = 64; -pub const VIRTIO_CONFIG_S_FAILED: u32 = 128; -pub const VIRTIO_TRANSPORT_F_START: u32 = 28; -pub const VIRTIO_TRANSPORT_F_END: u32 = 34; -pub const VIRTIO_F_NOTIFY_ON_EMPTY: u32 = 24; -pub const VIRTIO_F_ANY_LAYOUT: u32 = 27; -pub const VIRTIO_F_VERSION_1: u32 = 32; -pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; -pub const VIRTIO_BLK_F_SIZE_MAX: u32 = 1; -pub const VIRTIO_BLK_F_SEG_MAX: u32 = 2; -pub const VIRTIO_BLK_F_GEOMETRY: u32 = 4; -pub const VIRTIO_BLK_F_RO: u32 = 5; -pub const VIRTIO_BLK_F_BLK_SIZE: u32 = 6; -pub const VIRTIO_BLK_F_TOPOLOGY: u32 = 10; -pub const VIRTIO_BLK_F_MQ: u32 = 12; -pub const VIRTIO_BLK_F_BARRIER: u32 = 0; -pub const VIRTIO_BLK_F_SCSI: u32 = 7; -pub const VIRTIO_BLK_F_FLUSH: u32 = 9; -pub const VIRTIO_BLK_F_CONFIG_WCE: u32 = 11; -pub const VIRTIO_BLK_F_WCE: u32 = 9; -pub const VIRTIO_BLK_ID_BYTES: u32 = 20; -pub const VIRTIO_BLK_T_IN: u32 = 0; -pub const VIRTIO_BLK_T_OUT: u32 = 1; -pub const VIRTIO_BLK_T_SCSI_CMD: u32 = 2; -pub const VIRTIO_BLK_T_FLUSH: u32 = 4; -pub const VIRTIO_BLK_T_GET_ID: u32 = 8; -pub const VIRTIO_BLK_T_BARRIER: u32 = 2147483648; -pub const VIRTIO_BLK_S_OK: u32 = 0; -pub const VIRTIO_BLK_S_IOERR: u32 = 1; -pub const VIRTIO_BLK_S_UNSUPP: u32 = 2; -pub type __s8 = ::std::os::raw::c_schar; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __s16 = ::std::os::raw::c_short; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __s64 = ::std::os::raw::c_longlong; -pub type __u64 = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct __kernel_fd_set { - pub fds_bits: [::std::os::raw::c_ulong; 16usize], -} -#[test] -fn bindgen_test_layout___kernel_fd_set() { - assert_eq!( - ::std::mem::size_of::<__kernel_fd_set>(), - 128usize, - concat!("Size of: ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fd_set>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fd_set>())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -pub type __kernel_sighandler_t = - ::std::option::Option; -pub type __kernel_key_t = ::std::os::raw::c_int; -pub type __kernel_mqd_t = ::std::os::raw::c_int; -pub type __kernel_old_uid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_gid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_dev_t = ::std::os::raw::c_ulong; -pub type __kernel_long_t = ::std::os::raw::c_long; -pub type __kernel_ulong_t = ::std::os::raw::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = ::std::os::raw::c_uint; -pub type __kernel_pid_t = ::std::os::raw::c_int; -pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; -pub type __kernel_uid_t = ::std::os::raw::c_uint; -pub type __kernel_gid_t = ::std::os::raw::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = ::std::os::raw::c_int; -pub type __kernel_uid32_t = ::std::os::raw::c_uint; -pub type __kernel_gid32_t = ::std::os::raw::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct __kernel_fsid_t { - pub val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___kernel_fsid_t() { - assert_eq!( - ::std::mem::size_of::<__kernel_fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fsid_t>())).val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fsid_t), - "::", - stringify!(val) - ) - ); -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = ::std::os::raw::c_int; -pub type __kernel_clockid_t = ::std::os::raw::c_int; -pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; -pub type __kernel_uid16_t = ::std::os::raw::c_ushort; -pub type __kernel_gid16_t = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __virtio16 = __u16; -pub type __virtio32 = __u32; -pub type __virtio64 = __u64; -#[repr(C, packed)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_blk_config { - pub capacity: __u64, - pub size_max: __u32, - pub seg_max: __u32, - pub geometry: virtio_blk_config_virtio_blk_geometry, - pub blk_size: __u32, - pub physical_block_exp: __u8, - pub alignment_offset: __u8, - pub min_io_size: __u16, - pub opt_io_size: __u32, - pub wce: __u8, - pub unused: __u8, - pub num_queues: __u16, -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_blk_config_virtio_blk_geometry { - pub cylinders: __u16, - pub heads: __u8, - pub sectors: __u8, -} -#[test] -fn bindgen_test_layout_virtio_blk_config_virtio_blk_geometry() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!( - "Size of: ", - stringify!(virtio_blk_config_virtio_blk_geometry) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!( - "Alignment of ", - stringify!(virtio_blk_config_virtio_blk_geometry) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).cylinders as *const _ - as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config_virtio_blk_geometry), - "::", - stringify!(cylinders) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).heads as *const _ - as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config_virtio_blk_geometry), - "::", - stringify!(heads) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).sectors as *const _ - as usize - }, - 3usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config_virtio_blk_geometry), - "::", - stringify!(sectors) - ) - ); -} -#[test] -fn bindgen_test_layout_virtio_blk_config() { - assert_eq!( - ::std::mem::size_of::(), - 36usize, - concat!("Size of: ", stringify!(virtio_blk_config)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(virtio_blk_config)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).capacity as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(capacity) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).size_max as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(size_max) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).seg_max as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(seg_max) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).geometry as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(geometry) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).blk_size as *const _ as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(blk_size) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).physical_block_exp as *const _ as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(physical_block_exp) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).alignment_offset as *const _ as usize - }, - 25usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(alignment_offset) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).min_io_size as *const _ as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(min_io_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).opt_io_size as *const _ as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(opt_io_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).wce as *const _ as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(wce) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).unused as *const _ as usize }, - 33usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(unused) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).num_queues as *const _ as usize }, - 34usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_config), - "::", - stringify!(num_queues) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_blk_outhdr { - pub type_: __virtio32, - pub ioprio: __virtio32, - pub sector: __virtio64, -} -#[test] -fn bindgen_test_layout_virtio_blk_outhdr() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(virtio_blk_outhdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(virtio_blk_outhdr)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_outhdr), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).ioprio as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_outhdr), - "::", - stringify!(ioprio) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sector as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(virtio_blk_outhdr), - "::", - stringify!(sector) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_scsi_inhdr { - pub errors: __virtio32, - pub data_len: __virtio32, - pub sense_len: __virtio32, - pub residual: __virtio32, -} -#[test] -fn bindgen_test_layout_virtio_scsi_inhdr() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(virtio_scsi_inhdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(virtio_scsi_inhdr)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).errors as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_scsi_inhdr), - "::", - stringify!(errors) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).data_len as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(virtio_scsi_inhdr), - "::", - stringify!(data_len) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).sense_len as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(virtio_scsi_inhdr), - "::", - stringify!(sense_len) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).residual as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(virtio_scsi_inhdr), - "::", - stringify!(residual) - ) - ); -} diff --git a/crates/virtio-bindings/src/bindings_v4_14_0/virtio_net.rs b/crates/virtio-bindings/src/bindings_v4_14_0/virtio_net.rs deleted file mode 100644 index 338faf17..00000000 --- a/crates/virtio-bindings/src/bindings_v4_14_0/virtio_net.rs +++ /dev/null @@ -1,744 +0,0 @@ -/* automatically generated by rust-bindgen */ - -#[repr(C)] -#[derive(Default)] -pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { - #[inline] - pub fn new() -> Self { - __IncompleteArrayField(::std::marker::PhantomData, []) - } - #[inline] - pub unsafe fn as_ptr(&self) -> *const T { - ::std::mem::transmute(self) - } - #[inline] - pub unsafe fn as_mut_ptr(&mut self) -> *mut T { - ::std::mem::transmute(self) - } - #[inline] - pub unsafe fn as_slice(&self, len: usize) -> &[T] { - ::std::slice::from_raw_parts(self.as_ptr(), len) - } - #[inline] - pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { - ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) - } -} -impl ::std::fmt::Debug for __IncompleteArrayField { - fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - fmt.write_str("__IncompleteArrayField") - } -} -impl ::std::clone::Clone for __IncompleteArrayField { - #[inline] - fn clone(&self) -> Self { - Self::new() - } -} -pub const __BITS_PER_LONG: u32 = 64; -pub const __FD_SETSIZE: u32 = 1024; -pub const VIRTIO_ID_NET: u32 = 1; -pub const VIRTIO_ID_BLOCK: u32 = 2; -pub const VIRTIO_ID_CONSOLE: u32 = 3; -pub const VIRTIO_ID_RNG: u32 = 4; -pub const VIRTIO_ID_BALLOON: u32 = 5; -pub const VIRTIO_ID_RPMSG: u32 = 7; -pub const VIRTIO_ID_SCSI: u32 = 8; -pub const VIRTIO_ID_9P: u32 = 9; -pub const VIRTIO_ID_RPROC_SERIAL: u32 = 11; -pub const VIRTIO_ID_CAIF: u32 = 12; -pub const VIRTIO_ID_GPU: u32 = 16; -pub const VIRTIO_ID_INPUT: u32 = 18; -pub const VIRTIO_ID_VSOCK: u32 = 19; -pub const VIRTIO_ID_CRYPTO: u32 = 20; -pub const VIRTIO_CONFIG_S_ACKNOWLEDGE: u32 = 1; -pub const VIRTIO_CONFIG_S_DRIVER: u32 = 2; -pub const VIRTIO_CONFIG_S_DRIVER_OK: u32 = 4; -pub const VIRTIO_CONFIG_S_FEATURES_OK: u32 = 8; -pub const VIRTIO_CONFIG_S_NEEDS_RESET: u32 = 64; -pub const VIRTIO_CONFIG_S_FAILED: u32 = 128; -pub const VIRTIO_TRANSPORT_F_START: u32 = 28; -pub const VIRTIO_TRANSPORT_F_END: u32 = 34; -pub const VIRTIO_F_NOTIFY_ON_EMPTY: u32 = 24; -pub const VIRTIO_F_ANY_LAYOUT: u32 = 27; -pub const VIRTIO_F_VERSION_1: u32 = 32; -pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; -pub const ETH_ALEN: u32 = 6; -pub const ETH_HLEN: u32 = 14; -pub const ETH_ZLEN: u32 = 60; -pub const ETH_DATA_LEN: u32 = 1500; -pub const ETH_FRAME_LEN: u32 = 1514; -pub const ETH_FCS_LEN: u32 = 4; -pub const ETH_MIN_MTU: u32 = 68; -pub const ETH_MAX_MTU: u32 = 65535; -pub const ETH_P_LOOP: u32 = 96; -pub const ETH_P_PUP: u32 = 512; -pub const ETH_P_PUPAT: u32 = 513; -pub const ETH_P_TSN: u32 = 8944; -pub const ETH_P_IP: u32 = 2048; -pub const ETH_P_X25: u32 = 2053; -pub const ETH_P_ARP: u32 = 2054; -pub const ETH_P_BPQ: u32 = 2303; -pub const ETH_P_IEEEPUP: u32 = 2560; -pub const ETH_P_IEEEPUPAT: u32 = 2561; -pub const ETH_P_BATMAN: u32 = 17157; -pub const ETH_P_DEC: u32 = 24576; -pub const ETH_P_DNA_DL: u32 = 24577; -pub const ETH_P_DNA_RC: u32 = 24578; -pub const ETH_P_DNA_RT: u32 = 24579; -pub const ETH_P_LAT: u32 = 24580; -pub const ETH_P_DIAG: u32 = 24581; -pub const ETH_P_CUST: u32 = 24582; -pub const ETH_P_SCA: u32 = 24583; -pub const ETH_P_TEB: u32 = 25944; -pub const ETH_P_RARP: u32 = 32821; -pub const ETH_P_ATALK: u32 = 32923; -pub const ETH_P_AARP: u32 = 33011; -pub const ETH_P_8021Q: u32 = 33024; -pub const ETH_P_ERSPAN: u32 = 35006; -pub const ETH_P_IPX: u32 = 33079; -pub const ETH_P_IPV6: u32 = 34525; -pub const ETH_P_PAUSE: u32 = 34824; -pub const ETH_P_SLOW: u32 = 34825; -pub const ETH_P_WCCP: u32 = 34878; -pub const ETH_P_MPLS_UC: u32 = 34887; -pub const ETH_P_MPLS_MC: u32 = 34888; -pub const ETH_P_ATMMPOA: u32 = 34892; -pub const ETH_P_PPP_DISC: u32 = 34915; -pub const ETH_P_PPP_SES: u32 = 34916; -pub const ETH_P_LINK_CTL: u32 = 34924; -pub const ETH_P_ATMFATE: u32 = 34948; -pub const ETH_P_PAE: u32 = 34958; -pub const ETH_P_AOE: u32 = 34978; -pub const ETH_P_8021AD: u32 = 34984; -pub const ETH_P_802_EX1: u32 = 34997; -pub const ETH_P_TIPC: u32 = 35018; -pub const ETH_P_MACSEC: u32 = 35045; -pub const ETH_P_8021AH: u32 = 35047; -pub const ETH_P_MVRP: u32 = 35061; -pub const ETH_P_1588: u32 = 35063; -pub const ETH_P_NCSI: u32 = 35064; -pub const ETH_P_PRP: u32 = 35067; -pub const ETH_P_FCOE: u32 = 35078; -pub const ETH_P_IBOE: u32 = 35093; -pub const ETH_P_TDLS: u32 = 35085; -pub const ETH_P_FIP: u32 = 35092; -pub const ETH_P_80221: u32 = 35095; -pub const ETH_P_HSR: u32 = 35119; -pub const ETH_P_NSH: u32 = 35151; -pub const ETH_P_LOOPBACK: u32 = 36864; -pub const ETH_P_QINQ1: u32 = 37120; -pub const ETH_P_QINQ2: u32 = 37376; -pub const ETH_P_QINQ3: u32 = 37632; -pub const ETH_P_EDSA: u32 = 56026; -pub const ETH_P_IFE: u32 = 60734; -pub const ETH_P_AF_IUCV: u32 = 64507; -pub const ETH_P_802_3_MIN: u32 = 1536; -pub const ETH_P_802_3: u32 = 1; -pub const ETH_P_AX25: u32 = 2; -pub const ETH_P_ALL: u32 = 3; -pub const ETH_P_802_2: u32 = 4; -pub const ETH_P_SNAP: u32 = 5; -pub const ETH_P_DDCMP: u32 = 6; -pub const ETH_P_WAN_PPP: u32 = 7; -pub const ETH_P_PPP_MP: u32 = 8; -pub const ETH_P_LOCALTALK: u32 = 9; -pub const ETH_P_CAN: u32 = 12; -pub const ETH_P_CANFD: u32 = 13; -pub const ETH_P_PPPTALK: u32 = 16; -pub const ETH_P_TR_802_2: u32 = 17; -pub const ETH_P_MOBITEX: u32 = 21; -pub const ETH_P_CONTROL: u32 = 22; -pub const ETH_P_IRDA: u32 = 23; -pub const ETH_P_ECONET: u32 = 24; -pub const ETH_P_HDLC: u32 = 25; -pub const ETH_P_ARCNET: u32 = 26; -pub const ETH_P_DSA: u32 = 27; -pub const ETH_P_TRAILER: u32 = 28; -pub const ETH_P_PHONET: u32 = 245; -pub const ETH_P_IEEE802154: u32 = 246; -pub const ETH_P_CAIF: u32 = 247; -pub const ETH_P_XDSA: u32 = 248; -pub const ETH_P_MAP: u32 = 249; -pub const VIRTIO_NET_F_CSUM: u32 = 0; -pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1; -pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2; -pub const VIRTIO_NET_F_MTU: u32 = 3; -pub const VIRTIO_NET_F_MAC: u32 = 5; -pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7; -pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8; -pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9; -pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10; -pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11; -pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12; -pub const VIRTIO_NET_F_HOST_ECN: u32 = 13; -pub const VIRTIO_NET_F_HOST_UFO: u32 = 14; -pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15; -pub const VIRTIO_NET_F_STATUS: u32 = 16; -pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17; -pub const VIRTIO_NET_F_CTRL_RX: u32 = 18; -pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19; -pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20; -pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21; -pub const VIRTIO_NET_F_MQ: u32 = 22; -pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23; -pub const VIRTIO_NET_F_GSO: u32 = 6; -pub const VIRTIO_NET_S_LINK_UP: u32 = 1; -pub const VIRTIO_NET_S_ANNOUNCE: u32 = 2; -pub const VIRTIO_NET_HDR_F_NEEDS_CSUM: u32 = 1; -pub const VIRTIO_NET_HDR_F_DATA_VALID: u32 = 2; -pub const VIRTIO_NET_HDR_GSO_NONE: u32 = 0; -pub const VIRTIO_NET_HDR_GSO_TCPV4: u32 = 1; -pub const VIRTIO_NET_HDR_GSO_UDP: u32 = 3; -pub const VIRTIO_NET_HDR_GSO_TCPV6: u32 = 4; -pub const VIRTIO_NET_HDR_GSO_ECN: u32 = 128; -pub const VIRTIO_NET_OK: u32 = 0; -pub const VIRTIO_NET_ERR: u32 = 1; -pub const VIRTIO_NET_CTRL_RX: u32 = 0; -pub const VIRTIO_NET_CTRL_RX_PROMISC: u32 = 0; -pub const VIRTIO_NET_CTRL_RX_ALLMULTI: u32 = 1; -pub const VIRTIO_NET_CTRL_RX_ALLUNI: u32 = 2; -pub const VIRTIO_NET_CTRL_RX_NOMULTI: u32 = 3; -pub const VIRTIO_NET_CTRL_RX_NOUNI: u32 = 4; -pub const VIRTIO_NET_CTRL_RX_NOBCAST: u32 = 5; -pub const VIRTIO_NET_CTRL_MAC: u32 = 1; -pub const VIRTIO_NET_CTRL_MAC_TABLE_SET: u32 = 0; -pub const VIRTIO_NET_CTRL_MAC_ADDR_SET: u32 = 1; -pub const VIRTIO_NET_CTRL_VLAN: u32 = 2; -pub const VIRTIO_NET_CTRL_VLAN_ADD: u32 = 0; -pub const VIRTIO_NET_CTRL_VLAN_DEL: u32 = 1; -pub const VIRTIO_NET_CTRL_ANNOUNCE: u32 = 3; -pub const VIRTIO_NET_CTRL_ANNOUNCE_ACK: u32 = 0; -pub const VIRTIO_NET_CTRL_MQ: u32 = 4; -pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET: u32 = 0; -pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN: u32 = 1; -pub const VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX: u32 = 32768; -pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS: u32 = 5; -pub const VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET: u32 = 0; -pub type __s8 = ::std::os::raw::c_schar; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __s16 = ::std::os::raw::c_short; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __s64 = ::std::os::raw::c_longlong; -pub type __u64 = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct __kernel_fd_set { - pub fds_bits: [::std::os::raw::c_ulong; 16usize], -} -#[test] -fn bindgen_test_layout___kernel_fd_set() { - assert_eq!( - ::std::mem::size_of::<__kernel_fd_set>(), - 128usize, - concat!("Size of: ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fd_set>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fd_set>())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -pub type __kernel_sighandler_t = - ::std::option::Option; -pub type __kernel_key_t = ::std::os::raw::c_int; -pub type __kernel_mqd_t = ::std::os::raw::c_int; -pub type __kernel_old_uid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_gid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_dev_t = ::std::os::raw::c_ulong; -pub type __kernel_long_t = ::std::os::raw::c_long; -pub type __kernel_ulong_t = ::std::os::raw::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = ::std::os::raw::c_uint; -pub type __kernel_pid_t = ::std::os::raw::c_int; -pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; -pub type __kernel_uid_t = ::std::os::raw::c_uint; -pub type __kernel_gid_t = ::std::os::raw::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = ::std::os::raw::c_int; -pub type __kernel_uid32_t = ::std::os::raw::c_uint; -pub type __kernel_gid32_t = ::std::os::raw::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct __kernel_fsid_t { - pub val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___kernel_fsid_t() { - assert_eq!( - ::std::mem::size_of::<__kernel_fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fsid_t>())).val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fsid_t), - "::", - stringify!(val) - ) - ); -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = ::std::os::raw::c_int; -pub type __kernel_clockid_t = ::std::os::raw::c_int; -pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; -pub type __kernel_uid16_t = ::std::os::raw::c_ushort; -pub type __kernel_gid16_t = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __virtio16 = __u16; -pub type __virtio32 = __u32; -pub type __virtio64 = __u64; -#[repr(C, packed)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct ethhdr { - pub h_dest: [::std::os::raw::c_uchar; 6usize], - pub h_source: [::std::os::raw::c_uchar; 6usize], - pub h_proto: __be16, -} -#[test] -fn bindgen_test_layout_ethhdr() { - assert_eq!( - ::std::mem::size_of::(), - 14usize, - concat!("Size of: ", stringify!(ethhdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ethhdr)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).h_dest as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ethhdr), - "::", - stringify!(h_dest) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).h_source as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(ethhdr), - "::", - stringify!(h_source) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).h_proto as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ethhdr), - "::", - stringify!(h_proto) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_config { - pub mac: [__u8; 6usize], - pub status: __u16, - pub max_virtqueue_pairs: __u16, - pub mtu: __u16, -} -#[test] -fn bindgen_test_layout_virtio_net_config() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(virtio_net_config)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(virtio_net_config)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mac as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_config), - "::", - stringify!(mac) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).status as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_config), - "::", - stringify!(status) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).max_virtqueue_pairs as *const _ as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_config), - "::", - stringify!(max_virtqueue_pairs) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).mtu as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_config), - "::", - stringify!(mtu) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_hdr_v1 { - pub flags: __u8, - pub gso_type: __u8, - pub hdr_len: __virtio16, - pub gso_size: __virtio16, - pub csum_start: __virtio16, - pub csum_offset: __virtio16, - pub num_buffers: __virtio16, -} -#[test] -fn bindgen_test_layout_virtio_net_hdr_v1() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(virtio_net_hdr_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(virtio_net_hdr_v1)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gso_type as *const _ as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(gso_type) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).hdr_len as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(hdr_len) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gso_size as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(gso_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).csum_start as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(csum_start) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).csum_offset as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(csum_offset) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).num_buffers as *const _ as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(num_buffers) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_hdr { - pub flags: __u8, - pub gso_type: __u8, - pub hdr_len: __virtio16, - pub gso_size: __virtio16, - pub csum_start: __virtio16, - pub csum_offset: __virtio16, -} -#[test] -fn bindgen_test_layout_virtio_net_hdr() { - assert_eq!( - ::std::mem::size_of::(), - 10usize, - concat!("Size of: ", stringify!(virtio_net_hdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(virtio_net_hdr)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gso_type as *const _ as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr), - "::", - stringify!(gso_type) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).hdr_len as *const _ as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr), - "::", - stringify!(hdr_len) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).gso_size as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr), - "::", - stringify!(gso_size) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).csum_start as *const _ as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr), - "::", - stringify!(csum_start) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).csum_offset as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr), - "::", - stringify!(csum_offset) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_hdr_mrg_rxbuf { - pub hdr: virtio_net_hdr, - pub num_buffers: __virtio16, -} -#[test] -fn bindgen_test_layout_virtio_net_hdr_mrg_rxbuf() { - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(virtio_net_hdr_mrg_rxbuf)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(virtio_net_hdr_mrg_rxbuf)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).hdr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_mrg_rxbuf), - "::", - stringify!(hdr) - ) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).num_buffers as *const _ as usize - }, - 10usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_mrg_rxbuf), - "::", - stringify!(num_buffers) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_ctrl_hdr { - pub class: __u8, - pub cmd: __u8, -} -#[test] -fn bindgen_test_layout_virtio_net_ctrl_hdr() { - assert_eq!( - ::std::mem::size_of::(), - 2usize, - concat!("Size of: ", stringify!(virtio_net_ctrl_hdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(virtio_net_ctrl_hdr)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).class as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_ctrl_hdr), - "::", - stringify!(class) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).cmd as *const _ as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_ctrl_hdr), - "::", - stringify!(cmd) - ) - ); -} -pub type virtio_net_ctrl_ack = __u8; -#[repr(C, packed)] -#[derive(Default)] -pub struct virtio_net_ctrl_mac { - pub entries: __virtio32, - pub macs: __IncompleteArrayField<[__u8; 6usize]>, -} -#[test] -fn bindgen_test_layout_virtio_net_ctrl_mac() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(virtio_net_ctrl_mac)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(virtio_net_ctrl_mac)) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_ctrl_mq { - pub virtqueue_pairs: __virtio16, -} -#[test] -fn bindgen_test_layout_virtio_net_ctrl_mq() { - assert_eq!( - ::std::mem::size_of::(), - 2usize, - concat!("Size of: ", stringify!(virtio_net_ctrl_mq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(virtio_net_ctrl_mq)) - ); - assert_eq!( - unsafe { - &(*(::std::ptr::null::())).virtqueue_pairs as *const _ as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_ctrl_mq), - "::", - stringify!(virtqueue_pairs) - ) - ); -} diff --git a/crates/virtio-bindings/src/bindings_v4_14_0/virtio_ring.rs b/crates/virtio-bindings/src/bindings_v4_14_0/virtio_ring.rs deleted file mode 100644 index 06f49eb4..00000000 --- a/crates/virtio-bindings/src/bindings_v4_14_0/virtio_ring.rs +++ /dev/null @@ -1,555 +0,0 @@ -/* automatically generated by rust-bindgen */ - -#[repr(C)] -#[derive(Default)] -pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { - #[inline] - pub fn new() -> Self { - __IncompleteArrayField(::std::marker::PhantomData, []) - } - #[inline] - pub unsafe fn as_ptr(&self) -> *const T { - ::std::mem::transmute(self) - } - #[inline] - pub unsafe fn as_mut_ptr(&mut self) -> *mut T { - ::std::mem::transmute(self) - } - #[inline] - pub unsafe fn as_slice(&self, len: usize) -> &[T] { - ::std::slice::from_raw_parts(self.as_ptr(), len) - } - #[inline] - pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { - ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) - } -} -impl ::std::fmt::Debug for __IncompleteArrayField { - fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - fmt.write_str("__IncompleteArrayField") - } -} -impl ::std::clone::Clone for __IncompleteArrayField { - #[inline] - fn clone(&self) -> Self { - Self::new() - } -} -pub const _STDINT_H: u32 = 1; -pub const _FEATURES_H: u32 = 1; -pub const _DEFAULT_SOURCE: u32 = 1; -pub const __USE_ISOC11: u32 = 1; -pub const __USE_ISOC99: u32 = 1; -pub const __USE_ISOC95: u32 = 1; -pub const __USE_POSIX_IMPLICITLY: u32 = 1; -pub const _POSIX_SOURCE: u32 = 1; -pub const _POSIX_C_SOURCE: u32 = 200809; -pub const __USE_POSIX: u32 = 1; -pub const __USE_POSIX2: u32 = 1; -pub const __USE_POSIX199309: u32 = 1; -pub const __USE_POSIX199506: u32 = 1; -pub const __USE_XOPEN2K: u32 = 1; -pub const __USE_XOPEN2K8: u32 = 1; -pub const _ATFILE_SOURCE: u32 = 1; -pub const __USE_MISC: u32 = 1; -pub const __USE_ATFILE: u32 = 1; -pub const __USE_FORTIFY_LEVEL: u32 = 0; -pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0; -pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0; -pub const _STDC_PREDEF_H: u32 = 1; -pub const __STDC_IEC_559__: u32 = 1; -pub const __STDC_IEC_559_COMPLEX__: u32 = 1; -pub const __STDC_ISO_10646__: u32 = 201706; -pub const __GNU_LIBRARY__: u32 = 6; -pub const __GLIBC__: u32 = 2; -pub const __GLIBC_MINOR__: u32 = 29; -pub const _SYS_CDEFS_H: u32 = 1; -pub const __glibc_c99_flexarr_available: u32 = 1; -pub const __WORDSIZE: u32 = 64; -pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1; -pub const __SYSCALL_WORDSIZE: u32 = 64; -pub const __HAVE_GENERIC_SELECTION: u32 = 1; -pub const __GLIBC_USE_LIB_EXT2: u32 = 0; -pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0; -pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0; -pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0; -pub const _BITS_TYPES_H: u32 = 1; -pub const __TIMESIZE: u32 = 64; -pub const _BITS_TYPESIZES_H: u32 = 1; -pub const __OFF_T_MATCHES_OFF64_T: u32 = 1; -pub const __INO_T_MATCHES_INO64_T: u32 = 1; -pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1; -pub const __FD_SETSIZE: u32 = 1024; -pub const _BITS_TIME64_H: u32 = 1; -pub const _BITS_WCHAR_H: u32 = 1; -pub const _BITS_STDINT_INTN_H: u32 = 1; -pub const _BITS_STDINT_UINTN_H: u32 = 1; -pub const INT8_MIN: i32 = -128; -pub const INT16_MIN: i32 = -32768; -pub const INT32_MIN: i32 = -2147483648; -pub const INT8_MAX: u32 = 127; -pub const INT16_MAX: u32 = 32767; -pub const INT32_MAX: u32 = 2147483647; -pub const UINT8_MAX: u32 = 255; -pub const UINT16_MAX: u32 = 65535; -pub const UINT32_MAX: u32 = 4294967295; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const INT_FAST8_MIN: i32 = -128; -pub const INT_FAST16_MIN: i64 = -9223372036854775808; -pub const INT_FAST32_MIN: i64 = -9223372036854775808; -pub const INT_FAST8_MAX: u32 = 127; -pub const INT_FAST16_MAX: u64 = 9223372036854775807; -pub const INT_FAST32_MAX: u64 = 9223372036854775807; -pub const UINT_FAST8_MAX: u32 = 255; -pub const UINT_FAST16_MAX: i32 = -1; -pub const UINT_FAST32_MAX: i32 = -1; -pub const INTPTR_MIN: i64 = -9223372036854775808; -pub const INTPTR_MAX: u64 = 9223372036854775807; -pub const UINTPTR_MAX: i32 = -1; -pub const PTRDIFF_MIN: i64 = -9223372036854775808; -pub const PTRDIFF_MAX: u64 = 9223372036854775807; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const SIZE_MAX: i32 = -1; -pub const WINT_MIN: u32 = 0; -pub const WINT_MAX: u32 = 4294967295; -pub const __BITS_PER_LONG: u32 = 64; -pub const VRING_DESC_F_NEXT: u32 = 1; -pub const VRING_DESC_F_WRITE: u32 = 2; -pub const VRING_DESC_F_INDIRECT: u32 = 4; -pub const VRING_USED_F_NO_NOTIFY: u32 = 1; -pub const VRING_AVAIL_F_NO_INTERRUPT: u32 = 1; -pub const VIRTIO_RING_F_INDIRECT_DESC: u32 = 28; -pub const VIRTIO_RING_F_EVENT_IDX: u32 = 29; -pub const VRING_AVAIL_ALIGN_SIZE: u32 = 2; -pub const VRING_USED_ALIGN_SIZE: u32 = 4; -pub const VRING_DESC_ALIGN_SIZE: u32 = 16; -pub type __u_char = ::std::os::raw::c_uchar; -pub type __u_short = ::std::os::raw::c_ushort; -pub type __u_int = ::std::os::raw::c_uint; -pub type __u_long = ::std::os::raw::c_ulong; -pub type __int8_t = ::std::os::raw::c_schar; -pub type __uint8_t = ::std::os::raw::c_uchar; -pub type __int16_t = ::std::os::raw::c_short; -pub type __uint16_t = ::std::os::raw::c_ushort; -pub type __int32_t = ::std::os::raw::c_int; -pub type __uint32_t = ::std::os::raw::c_uint; -pub type __int64_t = ::std::os::raw::c_long; -pub type __uint64_t = ::std::os::raw::c_ulong; -pub type __int_least8_t = __int8_t; -pub type __uint_least8_t = __uint8_t; -pub type __int_least16_t = __int16_t; -pub type __uint_least16_t = __uint16_t; -pub type __int_least32_t = __int32_t; -pub type __uint_least32_t = __uint32_t; -pub type __int_least64_t = __int64_t; -pub type __uint_least64_t = __uint64_t; -pub type __quad_t = ::std::os::raw::c_long; -pub type __u_quad_t = ::std::os::raw::c_ulong; -pub type __intmax_t = ::std::os::raw::c_long; -pub type __uintmax_t = ::std::os::raw::c_ulong; -pub type __dev_t = ::std::os::raw::c_ulong; -pub type __uid_t = ::std::os::raw::c_uint; -pub type __gid_t = ::std::os::raw::c_uint; -pub type __ino_t = ::std::os::raw::c_ulong; -pub type __ino64_t = ::std::os::raw::c_ulong; -pub type __mode_t = ::std::os::raw::c_uint; -pub type __nlink_t = ::std::os::raw::c_ulong; -pub type __off_t = ::std::os::raw::c_long; -pub type __off64_t = ::std::os::raw::c_long; -pub type __pid_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct __fsid_t { - pub __val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___fsid_t() { - assert_eq!( - ::std::mem::size_of::<__fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__fsid_t), - "::", - stringify!(__val) - ) - ); -} -pub type __clock_t = ::std::os::raw::c_long; -pub type __rlim_t = ::std::os::raw::c_ulong; -pub type __rlim64_t = ::std::os::raw::c_ulong; -pub type __id_t = ::std::os::raw::c_uint; -pub type __time_t = ::std::os::raw::c_long; -pub type __useconds_t = ::std::os::raw::c_uint; -pub type __suseconds_t = ::std::os::raw::c_long; -pub type __daddr_t = ::std::os::raw::c_int; -pub type __key_t = ::std::os::raw::c_int; -pub type __clockid_t = ::std::os::raw::c_int; -pub type __timer_t = *mut ::std::os::raw::c_void; -pub type __blksize_t = ::std::os::raw::c_long; -pub type __blkcnt_t = ::std::os::raw::c_long; -pub type __blkcnt64_t = ::std::os::raw::c_long; -pub type __fsblkcnt_t = ::std::os::raw::c_ulong; -pub type __fsblkcnt64_t = ::std::os::raw::c_ulong; -pub type __fsfilcnt_t = ::std::os::raw::c_ulong; -pub type __fsfilcnt64_t = ::std::os::raw::c_ulong; -pub type __fsword_t = ::std::os::raw::c_long; -pub type __ssize_t = ::std::os::raw::c_long; -pub type __syscall_slong_t = ::std::os::raw::c_long; -pub type __syscall_ulong_t = ::std::os::raw::c_ulong; -pub type __loff_t = __off64_t; -pub type __caddr_t = *mut ::std::os::raw::c_char; -pub type __intptr_t = ::std::os::raw::c_long; -pub type __socklen_t = ::std::os::raw::c_uint; -pub type __sig_atomic_t = ::std::os::raw::c_int; -pub type int_least8_t = __int_least8_t; -pub type int_least16_t = __int_least16_t; -pub type int_least32_t = __int_least32_t; -pub type int_least64_t = __int_least64_t; -pub type uint_least8_t = __uint_least8_t; -pub type uint_least16_t = __uint_least16_t; -pub type uint_least32_t = __uint_least32_t; -pub type uint_least64_t = __uint_least64_t; -pub type int_fast8_t = ::std::os::raw::c_schar; -pub type int_fast16_t = ::std::os::raw::c_long; -pub type int_fast32_t = ::std::os::raw::c_long; -pub type int_fast64_t = ::std::os::raw::c_long; -pub type uint_fast8_t = ::std::os::raw::c_uchar; -pub type uint_fast16_t = ::std::os::raw::c_ulong; -pub type uint_fast32_t = ::std::os::raw::c_ulong; -pub type uint_fast64_t = ::std::os::raw::c_ulong; -pub type intmax_t = __intmax_t; -pub type uintmax_t = __uintmax_t; -pub type __s8 = ::std::os::raw::c_schar; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __s16 = ::std::os::raw::c_short; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __s64 = ::std::os::raw::c_longlong; -pub type __u64 = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct __kernel_fd_set { - pub fds_bits: [::std::os::raw::c_ulong; 16usize], -} -#[test] -fn bindgen_test_layout___kernel_fd_set() { - assert_eq!( - ::std::mem::size_of::<__kernel_fd_set>(), - 128usize, - concat!("Size of: ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fd_set>(), - 8usize, - concat!("Alignment of ", stringify!(__kernel_fd_set)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fd_set>())).fds_bits as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fd_set), - "::", - stringify!(fds_bits) - ) - ); -} -pub type __kernel_sighandler_t = - ::std::option::Option; -pub type __kernel_key_t = ::std::os::raw::c_int; -pub type __kernel_mqd_t = ::std::os::raw::c_int; -pub type __kernel_old_uid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_gid_t = ::std::os::raw::c_ushort; -pub type __kernel_old_dev_t = ::std::os::raw::c_ulong; -pub type __kernel_long_t = ::std::os::raw::c_long; -pub type __kernel_ulong_t = ::std::os::raw::c_ulong; -pub type __kernel_ino_t = __kernel_ulong_t; -pub type __kernel_mode_t = ::std::os::raw::c_uint; -pub type __kernel_pid_t = ::std::os::raw::c_int; -pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; -pub type __kernel_uid_t = ::std::os::raw::c_uint; -pub type __kernel_gid_t = ::std::os::raw::c_uint; -pub type __kernel_suseconds_t = __kernel_long_t; -pub type __kernel_daddr_t = ::std::os::raw::c_int; -pub type __kernel_uid32_t = ::std::os::raw::c_uint; -pub type __kernel_gid32_t = ::std::os::raw::c_uint; -pub type __kernel_size_t = __kernel_ulong_t; -pub type __kernel_ssize_t = __kernel_long_t; -pub type __kernel_ptrdiff_t = __kernel_long_t; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct __kernel_fsid_t { - pub val: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout___kernel_fsid_t() { - assert_eq!( - ::std::mem::size_of::<__kernel_fsid_t>(), - 8usize, - concat!("Size of: ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - ::std::mem::align_of::<__kernel_fsid_t>(), - 4usize, - concat!("Alignment of ", stringify!(__kernel_fsid_t)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::<__kernel_fsid_t>())).val as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__kernel_fsid_t), - "::", - stringify!(val) - ) - ); -} -pub type __kernel_off_t = __kernel_long_t; -pub type __kernel_loff_t = ::std::os::raw::c_longlong; -pub type __kernel_time_t = __kernel_long_t; -pub type __kernel_clock_t = __kernel_long_t; -pub type __kernel_timer_t = ::std::os::raw::c_int; -pub type __kernel_clockid_t = ::std::os::raw::c_int; -pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; -pub type __kernel_uid16_t = ::std::os::raw::c_ushort; -pub type __kernel_gid16_t = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __be16 = __u16; -pub type __le32 = __u32; -pub type __be32 = __u32; -pub type __le64 = __u64; -pub type __be64 = __u64; -pub type __sum16 = __u16; -pub type __wsum = __u32; -pub type __virtio16 = __u16; -pub type __virtio32 = __u32; -pub type __virtio64 = __u64; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct vring_desc { - pub addr: __virtio64, - pub len: __virtio32, - pub flags: __virtio16, - pub next: __virtio16, -} -#[test] -fn bindgen_test_layout_vring_desc() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(vring_desc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(vring_desc)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).addr as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(vring_desc), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).len as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(vring_desc), - "::", - stringify!(len) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(vring_desc), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).next as *const _ as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(vring_desc), - "::", - stringify!(next) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default)] -pub struct vring_avail { - pub flags: __virtio16, - pub idx: __virtio16, - pub ring: __IncompleteArrayField<__virtio16>, -} -#[test] -fn bindgen_test_layout_vring_avail() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(vring_avail)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(vring_avail)) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct vring_used_elem { - pub id: __virtio32, - pub len: __virtio32, -} -#[test] -fn bindgen_test_layout_vring_used_elem() { - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(vring_used_elem)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(vring_used_elem)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).id as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(vring_used_elem), - "::", - stringify!(id) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).len as *const _ as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(vring_used_elem), - "::", - stringify!(len) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default)] -pub struct vring_used { - pub flags: __virtio16, - pub idx: __virtio16, - pub ring: __IncompleteArrayField, - pub __bindgen_align: [u32; 0usize], -} -#[test] -fn bindgen_test_layout_vring_used() { - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(vring_used)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(vring_used)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct vring { - pub num: ::std::os::raw::c_uint, - pub desc: *mut vring_desc, - pub avail: *mut vring_avail, - pub used: *mut vring_used, -} -#[test] -fn bindgen_test_layout_vring() { - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(vring)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(vring)) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).num as *const _ as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(vring), - "::", - stringify!(num) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).desc as *const _ as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(vring), - "::", - stringify!(desc) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).avail as *const _ as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(vring), - "::", - stringify!(avail) - ) - ); - assert_eq!( - unsafe { &(*(::std::ptr::null::())).used as *const _ as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(vring), - "::", - stringify!(used) - ) - ); -} -impl Default for vring { - fn default() -> Self { - unsafe { ::std::mem::zeroed() } - } -} diff --git a/crates/virtio-bindings/src/bindings_v5_0_0/mod.rs b/crates/virtio-bindings/src/bindings_v5_0_0/mod.rs deleted file mode 100644 index a2f42110..00000000 --- a/crates/virtio-bindings/src/bindings_v5_0_0/mod.rs +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2019 Red Hat, Inc. All Rights Reserved. -// SPDX-License-Identifier: (BSD-3-Clause OR Apache-2.0) - -#![allow(clippy::all)] -#![allow(non_upper_case_globals)] -#![allow(non_camel_case_types)] -#![allow(non_snake_case)] -// Keep this until https://github.com/rust-lang/rust-bindgen/issues/1651 is fixed. -#![cfg_attr(test, allow(deref_nullptr, unaligned_references))] - -pub mod virtio_blk; -pub mod virtio_net; -pub mod virtio_ring; diff --git a/crates/virtio-bindings/src/lib.rs b/crates/virtio-bindings/src/lib.rs index efe2dbd2..257ebfc5 100644 --- a/crates/virtio-bindings/src/lib.rs +++ b/crates/virtio-bindings/src/lib.rs @@ -1,24 +1,17 @@ // Copyright 2019 Red Hat, Inc. All Rights Reserved. // SPDX-License-Identifier: (BSD-3-Clause OR Apache-2.0) -#[cfg(all(feature = "virtio-v4_14_0", not(feature = "virtio-v5_0_0")))] -mod bindings_v4_14_0; -#[cfg(feature = "virtio-v5_0_0")] -mod bindings_v5_0_0; +#![allow(clippy::all)] +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +// Keep this until https://github.com/rust-lang/rust-bindgen/issues/1651 is fixed. +#![cfg_attr(test, allow(deref_nullptr, unaligned_references))] -// Major hack to have a default version in case no feature is specified: -// If no version is specified by using the features, just use the latest one -// which currently is 5.0. -#[cfg(all(not(feature = "virtio-v4_14_0"), not(feature = "virtio-v5_0_0")))] -mod bindings_v5_0_0; +pub mod virtio_blk; +pub mod virtio_net; +pub mod virtio_ring; pub mod bindings { - #[cfg(all(feature = "virtio-v4_14_0", not(feature = "virtio-v5_0_0")))] - pub use super::bindings_v4_14_0::*; - - #[cfg(feature = "virtio-v5_0_0")] - pub use super::bindings_v5_0_0::*; - - #[cfg(all(not(feature = "virtio-v4_14_0"), not(feature = "virtio-v5_0_0")))] - pub use super::bindings_v5_0_0::*; + pub use super::{virtio_blk, virtio_net, virtio_ring}; } diff --git a/crates/virtio-bindings/src/bindings_v5_0_0/virtio_blk.rs b/crates/virtio-bindings/src/virtio_blk.rs similarity index 100% rename from crates/virtio-bindings/src/bindings_v5_0_0/virtio_blk.rs rename to crates/virtio-bindings/src/virtio_blk.rs diff --git a/crates/virtio-bindings/src/bindings_v5_0_0/virtio_net.rs b/crates/virtio-bindings/src/virtio_net.rs similarity index 100% rename from crates/virtio-bindings/src/bindings_v5_0_0/virtio_net.rs rename to crates/virtio-bindings/src/virtio_net.rs diff --git a/crates/virtio-bindings/src/bindings_v5_0_0/virtio_ring.rs b/crates/virtio-bindings/src/virtio_ring.rs similarity index 100% rename from crates/virtio-bindings/src/bindings_v5_0_0/virtio_ring.rs rename to crates/virtio-bindings/src/virtio_ring.rs