diff --git a/src/firecracker/src/gen/mod.rs b/src/firecracker/src/gen/mod.rs new file mode 100644 index 00000000000..8419fadef62 --- /dev/null +++ b/src/firecracker/src/gen/mod.rs @@ -0,0 +1,4 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +pub mod prctl; diff --git a/src/firecracker/src/gen/prctl.rs b/src/firecracker/src/gen/prctl.rs new file mode 100644 index 00000000000..019cb58e5ce --- /dev/null +++ b/src/firecracker/src/gen/prctl.rs @@ -0,0 +1,155 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// automatically generated by tools/bindgen.sh + +#![allow( + non_camel_case_types, + non_upper_case_globals, + dead_code, + non_snake_case, + clippy::ptr_as_ptr, + clippy::undocumented_unsafe_blocks, + clippy::cast_lossless, + missing_debug_implementations, + clippy::tests_outside_test_module +)] + +pub const PR_SET_PDEATHSIG: u32 = 1; +pub const PR_GET_PDEATHSIG: u32 = 2; +pub const PR_GET_DUMPABLE: u32 = 3; +pub const PR_SET_DUMPABLE: u32 = 4; +pub const PR_GET_UNALIGN: u32 = 5; +pub const PR_SET_UNALIGN: u32 = 6; +pub const PR_UNALIGN_NOPRINT: u32 = 1; +pub const PR_UNALIGN_SIGBUS: u32 = 2; +pub const PR_GET_KEEPCAPS: u32 = 7; +pub const PR_SET_KEEPCAPS: u32 = 8; +pub const PR_GET_FPEMU: u32 = 9; +pub const PR_SET_FPEMU: u32 = 10; +pub const PR_FPEMU_NOPRINT: u32 = 1; +pub const PR_FPEMU_SIGFPE: u32 = 2; +pub const PR_GET_FPEXC: u32 = 11; +pub const PR_SET_FPEXC: u32 = 12; +pub const PR_FP_EXC_SW_ENABLE: u32 = 128; +pub const PR_FP_EXC_DIV: u32 = 65536; +pub const PR_FP_EXC_OVF: u32 = 131072; +pub const PR_FP_EXC_UND: u32 = 262144; +pub const PR_FP_EXC_RES: u32 = 524288; +pub const PR_FP_EXC_INV: u32 = 1048576; +pub const PR_FP_EXC_DISABLED: u32 = 0; +pub const PR_FP_EXC_NONRECOV: u32 = 1; +pub const PR_FP_EXC_ASYNC: u32 = 2; +pub const PR_FP_EXC_PRECISE: u32 = 3; +pub const PR_GET_TIMING: u32 = 13; +pub const PR_SET_TIMING: u32 = 14; +pub const PR_TIMING_STATISTICAL: u32 = 0; +pub const PR_TIMING_TIMESTAMP: u32 = 1; +pub const PR_SET_NAME: u32 = 15; +pub const PR_GET_NAME: u32 = 16; +pub const PR_GET_ENDIAN: u32 = 19; +pub const PR_SET_ENDIAN: u32 = 20; +pub const PR_ENDIAN_BIG: u32 = 0; +pub const PR_ENDIAN_LITTLE: u32 = 1; +pub const PR_ENDIAN_PPC_LITTLE: u32 = 2; +pub const PR_GET_SECCOMP: u32 = 21; +pub const PR_SET_SECCOMP: u32 = 22; +pub const PR_CAPBSET_READ: u32 = 23; +pub const PR_CAPBSET_DROP: u32 = 24; +pub const PR_GET_TSC: u32 = 25; +pub const PR_SET_TSC: u32 = 26; +pub const PR_TSC_ENABLE: u32 = 1; +pub const PR_TSC_SIGSEGV: u32 = 2; +pub const PR_GET_SECUREBITS: u32 = 27; +pub const PR_SET_SECUREBITS: u32 = 28; +pub const PR_SET_TIMERSLACK: u32 = 29; +pub const PR_GET_TIMERSLACK: u32 = 30; +pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31; +pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32; +pub const PR_MCE_KILL: u32 = 33; +pub const PR_MCE_KILL_CLEAR: u32 = 0; +pub const PR_MCE_KILL_SET: u32 = 1; +pub const PR_MCE_KILL_LATE: u32 = 0; +pub const PR_MCE_KILL_EARLY: u32 = 1; +pub const PR_MCE_KILL_DEFAULT: u32 = 2; +pub const PR_MCE_KILL_GET: u32 = 34; +pub const PR_SET_MM: u32 = 35; +pub const PR_SET_MM_START_CODE: u32 = 1; +pub const PR_SET_MM_END_CODE: u32 = 2; +pub const PR_SET_MM_START_DATA: u32 = 3; +pub const PR_SET_MM_END_DATA: u32 = 4; +pub const PR_SET_MM_START_STACK: u32 = 5; +pub const PR_SET_MM_START_BRK: u32 = 6; +pub const PR_SET_MM_BRK: u32 = 7; +pub const PR_SET_MM_ARG_START: u32 = 8; +pub const PR_SET_MM_ARG_END: u32 = 9; +pub const PR_SET_MM_ENV_START: u32 = 10; +pub const PR_SET_MM_ENV_END: u32 = 11; +pub const PR_SET_MM_AUXV: u32 = 12; +pub const PR_SET_MM_EXE_FILE: u32 = 13; +pub const PR_SET_MM_MAP: u32 = 14; +pub const PR_SET_MM_MAP_SIZE: u32 = 15; +pub const PR_SET_PTRACER: u32 = 1499557217; +pub const PR_SET_CHILD_SUBREAPER: u32 = 36; +pub const PR_GET_CHILD_SUBREAPER: u32 = 37; +pub const PR_SET_NO_NEW_PRIVS: u32 = 38; +pub const PR_GET_NO_NEW_PRIVS: u32 = 39; +pub const PR_GET_TID_ADDRESS: u32 = 40; +pub const PR_SET_THP_DISABLE: u32 = 41; +pub const PR_GET_THP_DISABLE: u32 = 42; +pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43; +pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44; +pub const PR_SET_FP_MODE: u32 = 45; +pub const PR_GET_FP_MODE: u32 = 46; +pub const PR_FP_MODE_FR: u32 = 1; +pub const PR_FP_MODE_FRE: u32 = 2; +pub const PR_CAP_AMBIENT: u32 = 47; +pub const PR_CAP_AMBIENT_IS_SET: u32 = 1; +pub const PR_CAP_AMBIENT_RAISE: u32 = 2; +pub const PR_CAP_AMBIENT_LOWER: u32 = 3; +pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4; +pub const PR_SVE_SET_VL: u32 = 50; +pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SVE_GET_VL: u32 = 51; +pub const PR_SVE_VL_LEN_MASK: u32 = 65535; +pub const PR_SVE_VL_INHERIT: u32 = 131072; +pub const PR_GET_SPECULATION_CTRL: u32 = 52; +pub const PR_SET_SPECULATION_CTRL: i32 = 53; +pub const PR_SPEC_STORE_BYPASS: u32 = 0; +pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1; +pub const PR_SPEC_L1D_FLUSH: u32 = 2; +pub const PR_SPEC_NOT_AFFECTED: u32 = 0; +pub const PR_SPEC_PRCTL: u32 = 1; +pub const PR_SPEC_ENABLE: u32 = 2; +pub const PR_SPEC_DISABLE: u32 = 4; +pub const PR_SPEC_FORCE_DISABLE: u32 = 8; +pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16; +pub const PR_PAC_RESET_KEYS: u32 = 54; +pub const PR_PAC_APIAKEY: u32 = 1; +pub const PR_PAC_APIBKEY: u32 = 2; +pub const PR_PAC_APDAKEY: u32 = 4; +pub const PR_PAC_APDBKEY: u32 = 8; +pub const PR_PAC_APGAKEY: u32 = 16; +pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55; +pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56; +pub const PR_TAGGED_ADDR_ENABLE: u32 = 1; +pub const PR_MTE_TCF_NONE: u32 = 0; +pub const PR_MTE_TCF_SYNC: u32 = 2; +pub const PR_MTE_TCF_ASYNC: u32 = 4; +pub const PR_MTE_TCF_MASK: u32 = 6; +pub const PR_MTE_TAG_SHIFT: u32 = 3; +pub const PR_MTE_TAG_MASK: u32 = 524280; +pub const PR_MTE_TCF_SHIFT: u32 = 1; +pub const PR_SET_IO_FLUSHER: u32 = 57; +pub const PR_GET_IO_FLUSHER: u32 = 58; +pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59; +pub const PR_SYS_DISPATCH_OFF: u32 = 0; +pub const PR_SYS_DISPATCH_ON: u32 = 1; +pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60; +pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61; +pub const PR_SCHED_CORE: u32 = 62; +pub const PR_SCHED_CORE_GET: u32 = 0; +pub const PR_SCHED_CORE_CREATE: u32 = 1; +pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; +pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; +pub const PR_SCHED_CORE_MAX: u32 = 4; diff --git a/src/firecracker/src/main.rs b/src/firecracker/src/main.rs index 9ec166f649c..c9c802ed133 100644 --- a/src/firecracker/src/main.rs +++ b/src/firecracker/src/main.rs @@ -3,6 +3,7 @@ mod api_server; mod api_server_adapter; +mod gen; mod metrics; mod seccomp; @@ -489,22 +490,15 @@ fn resize_fdtable() -> Result<(), ResizeFdTableError> { /// Enable SSBD mitigation through `prctl`. #[cfg(target_arch = "aarch64")] pub fn enable_ssbd_mitigation() { - // Parameters for `prctl` - // TODO: generate bindings for these from the kernel sources. - // https://elixir.bootlin.com/linux/v4.17/source/include/uapi/linux/prctl.h#L212 - const PR_SET_SPECULATION_CTRL: i32 = 53; - const PR_SPEC_STORE_BYPASS: u64 = 0; - const PR_SPEC_FORCE_DISABLE: u64 = 1u64 << 3; - // SAFETY: Parameters are valid since they are copied verbatim // from the kernel's UAPI. // PR_SET_SPECULATION_CTRL only uses those 2 parameters, so it's ok // to leave the latter 2 as zero. let ret = unsafe { libc::prctl( - PR_SET_SPECULATION_CTRL, - PR_SPEC_STORE_BYPASS, - PR_SPEC_FORCE_DISABLE, + gen::prctl::PR_SET_SPECULATION_CTRL, + gen::prctl::PR_SPEC_STORE_BYPASS, + gen::prctl::PR_SPEC_FORCE_DISABLE, 0, 0, ) diff --git a/src/vmm/src/arch_gen/x86/hyperv.rs b/src/vmm/src/arch_gen/x86/hyperv.rs index 8e312fa6654..1f1e3caed51 100644 --- a/src/vmm/src/arch_gen/x86/hyperv.rs +++ b/src/vmm/src/arch_gen/x86/hyperv.rs @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh diff --git a/src/vmm/src/arch_gen/x86/hyperv_tlfs.rs b/src/vmm/src/arch_gen/x86/hyperv_tlfs.rs index 02750ebd4e6..9c7b667b465 100644 --- a/src/vmm/src/arch_gen/x86/hyperv_tlfs.rs +++ b/src/vmm/src/arch_gen/x86/hyperv_tlfs.rs @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh diff --git a/src/vmm/src/arch_gen/x86/mpspec.rs b/src/vmm/src/arch_gen/x86/mpspec.rs index 9ed50be7a23..8d561474abc 100644 --- a/src/vmm/src/arch_gen/x86/mpspec.rs +++ b/src/vmm/src/arch_gen/x86/mpspec.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -15,7 +15,7 @@ clippy::tests_outside_test_module )] -pub const MPC_SIGNATURE: &[u8; 5usize] = b"PCMP\0"; +pub const MPC_SIGNATURE: &[u8; 5] = b"PCMP\0"; pub const MP_PROCESSOR: u32 = 0; pub const MP_BUS: u32 = 1; pub const MP_IOAPIC: u32 = 2; @@ -27,24 +27,24 @@ pub const CPU_BOOTPROCESSOR: u32 = 2; pub const CPU_STEPPING_MASK: u32 = 15; pub const CPU_MODEL_MASK: u32 = 240; pub const CPU_FAMILY_MASK: u32 = 3840; -pub const BUSTYPE_EISA: &[u8; 5usize] = b"EISA\0"; -pub const BUSTYPE_ISA: &[u8; 4usize] = b"ISA\0"; -pub const BUSTYPE_INTERN: &[u8; 7usize] = b"INTERN\0"; -pub const BUSTYPE_MCA: &[u8; 4usize] = b"MCA\0"; -pub const BUSTYPE_VL: &[u8; 3usize] = b"VL\0"; -pub const BUSTYPE_PCI: &[u8; 4usize] = b"PCI\0"; -pub const BUSTYPE_PCMCIA: &[u8; 7usize] = b"PCMCIA\0"; -pub const BUSTYPE_CBUS: &[u8; 5usize] = b"CBUS\0"; -pub const BUSTYPE_CBUSII: &[u8; 7usize] = b"CBUSII\0"; -pub const BUSTYPE_FUTURE: &[u8; 7usize] = b"FUTURE\0"; -pub const BUSTYPE_MBI: &[u8; 4usize] = b"MBI\0"; -pub const BUSTYPE_MBII: &[u8; 5usize] = b"MBII\0"; -pub const BUSTYPE_MPI: &[u8; 4usize] = b"MPI\0"; -pub const BUSTYPE_MPSA: &[u8; 5usize] = b"MPSA\0"; -pub const BUSTYPE_NUBUS: &[u8; 6usize] = b"NUBUS\0"; -pub const BUSTYPE_TC: &[u8; 3usize] = b"TC\0"; -pub const BUSTYPE_VME: &[u8; 4usize] = b"VME\0"; -pub const BUSTYPE_XPRESS: &[u8; 7usize] = b"XPRESS\0"; +pub const BUSTYPE_EISA: &[u8; 5] = b"EISA\0"; +pub const BUSTYPE_ISA: &[u8; 4] = b"ISA\0"; +pub const BUSTYPE_INTERN: &[u8; 7] = b"INTERN\0"; +pub const BUSTYPE_MCA: &[u8; 4] = b"MCA\0"; +pub const BUSTYPE_VL: &[u8; 3] = b"VL\0"; +pub const BUSTYPE_PCI: &[u8; 4] = b"PCI\0"; +pub const BUSTYPE_PCMCIA: &[u8; 7] = b"PCMCIA\0"; +pub const BUSTYPE_CBUS: &[u8; 5] = b"CBUS\0"; +pub const BUSTYPE_CBUSII: &[u8; 7] = b"CBUSII\0"; +pub const BUSTYPE_FUTURE: &[u8; 7] = b"FUTURE\0"; +pub const BUSTYPE_MBI: &[u8; 4] = b"MBI\0"; +pub const BUSTYPE_MBII: &[u8; 5] = b"MBII\0"; +pub const BUSTYPE_MPI: &[u8; 4] = b"MPI\0"; +pub const BUSTYPE_MPSA: &[u8; 5] = b"MPSA\0"; +pub const BUSTYPE_NUBUS: &[u8; 6] = b"NUBUS\0"; +pub const BUSTYPE_TC: &[u8; 3] = b"TC\0"; +pub const BUSTYPE_VME: &[u8; 4] = b"VME\0"; +pub const BUSTYPE_XPRESS: &[u8; 7] = b"XPRESS\0"; pub const MPC_APIC_USABLE: u32 = 1; pub const MP_IRQPOL_DEFAULT: u32 = 0; pub const MP_IRQPOL_ACTIVE_HIGH: u32 = 1; @@ -57,7 +57,7 @@ pub const MP_IRQTRIG_RESERVED: u32 = 8; pub const MP_IRQTRIG_LEVEL: u32 = 12; pub const MP_IRQTRIG_MASK: u32 = 12; pub const MP_APIC_ALL: u32 = 255; -pub const MPC_OEM_SIGNATURE: &[u8; 5usize] = b"_OEM\0"; +pub const MPC_OEM_SIGNATURE: &[u8; 5] = b"_OEM\0"; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct mpf_intel { @@ -74,6 +74,8 @@ pub struct mpf_intel { } #[test] fn bindgen_test_layout_mpf_intel() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -84,176 +86,106 @@ fn bindgen_test_layout_mpf_intel() { 4usize, concat!("Alignment of ", stringify!(mpf_intel)) ); - fn test_field_signature() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(signature) - ) - ); - } - test_field_signature(); - fn test_field_physptr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).physptr) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(physptr) - ) - ); - } - test_field_physptr(); - fn test_field_length() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(length) - ) - ); - } - test_field_length(); - fn test_field_specification() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).specification) as usize - ptr as usize - }, - 9usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(specification) - ) - ); - } - test_field_specification(); - fn test_field_checksum() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize - }, - 10usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(checksum) - ) - ); - } - test_field_checksum(); - fn test_field_feature1() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).feature1) as usize - ptr as usize - }, - 11usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature1) - ) - ); - } - test_field_feature1(); - fn test_field_feature2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).feature2) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature2) - ) - ); - } - test_field_feature2(); - fn test_field_feature3() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).feature3) as usize - ptr as usize - }, - 13usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature3) - ) - ); - } - test_field_feature3(); - fn test_field_feature4() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).feature4) as usize - ptr as usize - }, - 14usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature4) - ) - ); - } - test_field_feature4(); - fn test_field_feature5() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).feature5) as usize - ptr as usize - }, - 15usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature5) - ) - ); - } - test_field_feature5(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(signature) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).physptr) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(physptr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).specification) as usize - ptr as usize }, + 9usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(specification) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(checksum) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feature1) as usize - ptr as usize }, + 11usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(feature1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feature2) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(feature2) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feature3) as usize - ptr as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(feature3) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feature4) as usize - ptr as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(feature4) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).feature5) as usize - ptr as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(mpf_intel), + "::", + stringify!(feature5) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -272,6 +204,8 @@ pub struct mpc_table { } #[test] fn bindgen_test_layout_mpc_table() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 44usize, @@ -282,193 +216,116 @@ fn bindgen_test_layout_mpc_table() { 4usize, concat!("Alignment of ", stringify!(mpc_table)) ); - fn test_field_signature() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(signature) - ) - ); - } - test_field_signature(); - fn test_field_length() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(length) - ) - ); - } - test_field_length(); - fn test_field_spec() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).spec) as usize - ptr as usize - }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(spec) - ) - ); - } - test_field_spec(); - fn test_field_checksum() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize - }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(checksum) - ) - ); - } - test_field_checksum(); - fn test_field_oem() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).oem) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oem) - ) - ); - } - test_field_oem(); - fn test_field_productid() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).productid) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(productid) - ) - ); - } - test_field_productid(); - fn test_field_oemptr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).oemptr) as usize - ptr as usize - }, - 28usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oemptr) - ) - ); - } - test_field_oemptr(); - fn test_field_oemsize() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).oemsize) as usize - ptr as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oemsize) - ) - ); - } - test_field_oemsize(); - fn test_field_oemcount() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).oemcount) as usize - ptr as usize - }, - 34usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oemcount) - ) - ); - } - test_field_oemcount(); - fn test_field_lapic() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).lapic) as usize - ptr as usize - }, - 36usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(lapic) - ) - ); - } - test_field_lapic(); - fn test_field_reserved() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(reserved) - ) - ); - } - test_field_reserved(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(signature) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).spec) as usize - ptr as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(spec) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize }, + 7usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(checksum) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).oem) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(oem) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).productid) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(productid) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).oemptr) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(oemptr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).oemsize) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(oemsize) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).oemcount) as usize - ptr as usize }, + 34usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(oemcount) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).lapic) as usize - ptr as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(lapic) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(mpc_table), + "::", + stringify!(reserved) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -483,6 +340,8 @@ pub struct mpc_cpu { } #[test] fn bindgen_test_layout_mpc_cpu() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 20usize, @@ -493,125 +352,76 @@ fn bindgen_test_layout_mpc_cpu() { 4usize, concat!("Alignment of ", stringify!(mpc_cpu)) ); - fn test_field_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(type_) - ) - ); - } - test_field_type(); - fn test_field_apicid() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).apicid) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(apicid) - ) - ); - } - test_field_apicid(); - fn test_field_apicver() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).apicver) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(apicver) - ) - ); - } - test_field_apicver(); - fn test_field_cpuflag() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).cpuflag) as usize - ptr as usize - }, - 3usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(cpuflag) - ) - ); - } - test_field_cpuflag(); - fn test_field_cpufeature() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).cpufeature) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(cpufeature) - ) - ); - } - test_field_cpufeature(); - fn test_field_featureflag() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).featureflag) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(featureflag) - ) - ); - } - test_field_featureflag(); - fn test_field_reserved() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(reserved) - ) - ); - } - test_field_reserved(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpc_cpu), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).apicid) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(mpc_cpu), + "::", + stringify!(apicid) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).apicver) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(mpc_cpu), + "::", + stringify!(apicver) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cpuflag) as usize - ptr as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(mpc_cpu), + "::", + stringify!(cpuflag) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cpufeature) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mpc_cpu), + "::", + stringify!(cpufeature) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).featureflag) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mpc_cpu), + "::", + stringify!(featureflag) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(mpc_cpu), + "::", + stringify!(reserved) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -622,6 +432,8 @@ pub struct mpc_bus { } #[test] fn bindgen_test_layout_mpc_bus() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -632,57 +444,36 @@ fn bindgen_test_layout_mpc_bus() { 1usize, concat!("Alignment of ", stringify!(mpc_bus)) ); - fn test_field_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_bus), - "::", - stringify!(type_) - ) - ); - } - test_field_type(); - fn test_field_busid() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).busid) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_bus), - "::", - stringify!(busid) - ) - ); - } - test_field_busid(); - fn test_field_bustype() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).bustype) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_bus), - "::", - stringify!(bustype) - ) - ); - } - test_field_bustype(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpc_bus), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).busid) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(mpc_bus), + "::", + stringify!(busid) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).bustype) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(mpc_bus), + "::", + stringify!(bustype) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -695,6 +486,8 @@ pub struct mpc_ioapic { } #[test] fn bindgen_test_layout_mpc_ioapic() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -705,91 +498,56 @@ fn bindgen_test_layout_mpc_ioapic() { 4usize, concat!("Alignment of ", stringify!(mpc_ioapic)) ); - fn test_field_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(type_) - ) - ); - } - test_field_type(); - fn test_field_apicid() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).apicid) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(apicid) - ) - ); - } - test_field_apicid(); - fn test_field_apicver() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).apicver) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(apicver) - ) - ); - } - test_field_apicver(); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 3usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); - fn test_field_apicaddr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).apicaddr) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(apicaddr) - ) - ); - } - test_field_apicaddr(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpc_ioapic), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).apicid) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(mpc_ioapic), + "::", + stringify!(apicid) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).apicver) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(mpc_ioapic), + "::", + stringify!(apicver) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(mpc_ioapic), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).apicaddr) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mpc_ioapic), + "::", + stringify!(apicaddr) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -804,6 +562,8 @@ pub struct mpc_intsrc { } #[test] fn bindgen_test_layout_mpc_intsrc() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -814,125 +574,76 @@ fn bindgen_test_layout_mpc_intsrc() { 2usize, concat!("Alignment of ", stringify!(mpc_intsrc)) ); - fn test_field_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(type_) - ) - ); - } - test_field_type(); - fn test_field_irqtype() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).irqtype) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(irqtype) - ) - ); - } - test_field_irqtype(); - fn test_field_irqflag() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).irqflag) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(irqflag) - ) - ); - } - test_field_irqflag(); - fn test_field_srcbus() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).srcbus) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(srcbus) - ) - ); - } - test_field_srcbus(); - fn test_field_srcbusirq() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).srcbusirq) as usize - ptr as usize - }, - 5usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(srcbusirq) - ) - ); - } - test_field_srcbusirq(); - fn test_field_dstapic() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).dstapic) as usize - ptr as usize - }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(dstapic) - ) - ); - } - test_field_dstapic(); - fn test_field_dstirq() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).dstirq) as usize - ptr as usize - }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(dstirq) - ) - ); - } - test_field_dstirq(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpc_intsrc), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).irqtype) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(mpc_intsrc), + "::", + stringify!(irqtype) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).irqflag) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(mpc_intsrc), + "::", + stringify!(irqflag) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).srcbus) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mpc_intsrc), + "::", + stringify!(srcbus) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).srcbusirq) as usize - ptr as usize }, + 5usize, + concat!( + "Offset of field: ", + stringify!(mpc_intsrc), + "::", + stringify!(srcbusirq) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dstapic) as usize - ptr as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(mpc_intsrc), + "::", + stringify!(dstapic) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dstirq) as usize - ptr as usize }, + 7usize, + concat!( + "Offset of field: ", + stringify!(mpc_intsrc), + "::", + stringify!(dstirq) + ) + ); } pub const mp_irq_source_types_mp_INT: mp_irq_source_types = 0; pub const mp_irq_source_types_mp_NMI: mp_irq_source_types = 1; @@ -952,6 +663,8 @@ pub struct mpc_lintsrc { } #[test] fn bindgen_test_layout_mpc_lintsrc() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -962,125 +675,76 @@ fn bindgen_test_layout_mpc_lintsrc() { 2usize, concat!("Alignment of ", stringify!(mpc_lintsrc)) ); - fn test_field_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(type_) - ) - ); - } - test_field_type(); - fn test_field_irqtype() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).irqtype) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(irqtype) - ) - ); - } - test_field_irqtype(); - fn test_field_irqflag() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).irqflag) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(irqflag) - ) - ); - } - test_field_irqflag(); - fn test_field_srcbusid() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).srcbusid) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(srcbusid) - ) - ); - } - test_field_srcbusid(); - fn test_field_srcbusirq() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).srcbusirq) as usize - ptr as usize - }, - 5usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(srcbusirq) - ) - ); - } - test_field_srcbusirq(); - fn test_field_destapic() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).destapic) as usize - ptr as usize - }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(destapic) - ) - ); - } - test_field_destapic(); - fn test_field_destapiclint() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).destapiclint) as usize - ptr as usize - }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(destapiclint) - ) - ); - } - test_field_destapiclint(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpc_lintsrc), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).irqtype) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(mpc_lintsrc), + "::", + stringify!(irqtype) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).irqflag) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(mpc_lintsrc), + "::", + stringify!(irqflag) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).srcbusid) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mpc_lintsrc), + "::", + stringify!(srcbusid) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).srcbusirq) as usize - ptr as usize }, + 5usize, + concat!( + "Offset of field: ", + stringify!(mpc_lintsrc), + "::", + stringify!(srcbusirq) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).destapic) as usize - ptr as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(mpc_lintsrc), + "::", + stringify!(destapic) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).destapiclint) as usize - ptr as usize }, + 7usize, + concat!( + "Offset of field: ", + stringify!(mpc_lintsrc), + "::", + stringify!(destapiclint) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -1093,6 +757,8 @@ pub struct mpc_oemtable { } #[test] fn bindgen_test_layout_mpc_oemtable() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -1103,91 +769,56 @@ fn bindgen_test_layout_mpc_oemtable() { 2usize, concat!("Alignment of ", stringify!(mpc_oemtable)) ); - fn test_field_signature() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(signature) - ) - ); - } - test_field_signature(); - fn test_field_length() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(length) - ) - ); - } - test_field_length(); - fn test_field_rev() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).rev) as usize - ptr as usize - }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(rev) - ) - ); - } - test_field_rev(); - fn test_field_checksum() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize - }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(checksum) - ) - ); - } - test_field_checksum(); - fn test_field_mpc() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).mpc) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(mpc) - ) - ); - } - test_field_mpc(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(mpc_oemtable), + "::", + stringify!(signature) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(mpc_oemtable), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).rev) as usize - ptr as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(mpc_oemtable), + "::", + stringify!(rev) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize }, + 7usize, + concat!( + "Offset of field: ", + stringify!(mpc_oemtable), + "::", + stringify!(checksum) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mpc) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(mpc_oemtable), + "::", + stringify!(mpc) + ) + ); } pub const mp_bustype_MP_BUS_ISA: mp_bustype = 1; pub const mp_bustype_MP_BUS_EISA: mp_bustype = 2; diff --git a/src/vmm/src/arch_gen/x86/msr_index.rs b/src/vmm/src/arch_gen/x86/msr_index.rs index 2a0daf3b0ab..d4917b98b5e 100644 --- a/src/vmm/src/arch_gen/x86/msr_index.rs +++ b/src/vmm/src/arch_gen/x86/msr_index.rs @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -207,8 +207,10 @@ pub const MSR_AMD_PPIN: u32 = 0xc00102f1; pub const MSR_AMD64_CPUID_FN_1: u32 = 0xc0011004; pub const MSR_AMD64_LS_CFG: u32 = 0xc0011020; pub const MSR_AMD64_DC_CFG: u32 = 0xc0011022; +pub const MSR_AMD64_TW_CFG: u32 = 0xc0011023; pub const MSR_AMD64_DE_CFG: u32 = 0xc0011029; pub const MSR_AMD64_DE_CFG_LFENCE_SERIALIZE_BIT: u32 = 0x1; +pub const MSR_AMD64_DE_CFG_ZEN2_FP_BACKUP_FIX_BIT: u32 = 0x9; pub const MSR_AMD64_BU_CFG2: u32 = 0xc001102a; pub const MSR_AMD64_IBSFETCHCTL: u32 = 0xc0011030; pub const MSR_AMD64_IBSFETCHLINAD: u32 = 0xc0011031; @@ -229,13 +231,16 @@ pub const MSR_AMD64_IBSBRTARGET: u32 = 0xc001103b; pub const MSR_AMD64_ICIBSEXTDCTL: u32 = 0xc001103c; pub const MSR_AMD64_IBSOPDATA4: u32 = 0xc001103d; pub const MSR_AMD64_IBS_REG_COUNT_MAX: u32 = 0x8; +pub const MSR_AMD64_VM_PAGE_FLUSH: u32 = 0xc001011e; pub const MSR_AMD64_SEV_ES_GHCB: u32 = 0xc0010130; pub const MSR_AMD64_SEV: u32 = 0xc0010131; pub const MSR_AMD64_SEV_ENABLED_BIT: u32 = 0x0; pub const MSR_AMD64_SEV_ES_ENABLED_BIT: u32 = 0x1; pub const MSR_AMD64_VIRT_SPEC_CTRL: u32 = 0xc001011f; -pub const MSR_F17H_IRPERF: u32 = 0xc00000e9; +pub const MSR_ZEN4_BP_CFG: u32 = 0xc001102e; +pub const MSR_ZEN4_BP_CFG_SHARED_BTB_FIX_BIT: u32 = 0x5; pub const MSR_ZEN2_SPECTRAL_CHICKEN: u32 = 0xc00110e3; +pub const MSR_F17H_IRPERF: u32 = 0xc00000e9; pub const MSR_F16H_L2I_PERF_CTL: u32 = 0xc0010230; pub const MSR_F16H_L2I_PERF_CTR: u32 = 0xc0010231; pub const MSR_F16H_DR1_ADDR_MASK: u32 = 0xc0011019; diff --git a/src/vmm/src/arch_gen/x86/perf_event.rs b/src/vmm/src/arch_gen/x86/perf_event.rs index 556fcfde8e2..3cbe8a2ca74 100644 --- a/src/vmm/src/arch_gen/x86/perf_event.rs +++ b/src/vmm/src/arch_gen/x86/perf_event.rs @@ -1,4 +1,4 @@ -// Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh diff --git a/src/vmm/src/devices/virtio/gen/virtio_blk.rs b/src/vmm/src/devices/virtio/gen/virtio_blk.rs index a382201dbd2..ced7469ecdd 100644 --- a/src/vmm/src/devices/virtio/gen/virtio_blk.rs +++ b/src/vmm/src/devices/virtio/gen/virtio_blk.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -18,7 +18,11 @@ 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_ACCESS_PLATFORM: u32 = 33; pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; +pub const VIRTIO_F_RING_PACKED: u32 = 34; +pub const VIRTIO_F_ORDER_PLATFORM: u32 = 36; +pub const VIRTIO_F_SR_IOV: u32 = 37; 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; @@ -26,6 +30,8 @@ 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_DISCARD: u32 = 13; +pub const VIRTIO_BLK_F_WRITE_ZEROES: u32 = 14; pub const VIRTIO_BLK_F_BARRIER: u32 = 0; pub const VIRTIO_BLK_F_SCSI: u32 = 7; pub const VIRTIO_BLK_F_FLUSH: u32 = 9; @@ -37,7 +43,10 @@ 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_DISCARD: u32 = 11; +pub const VIRTIO_BLK_T_WRITE_ZEROES: u32 = 13; pub const VIRTIO_BLK_T_BARRIER: u32 = 2147483648; +pub const VIRTIO_BLK_WRITE_ZEROES_FLAG_UNMAP: u32 = 1; pub const VIRTIO_BLK_S_OK: u32 = 0; pub const VIRTIO_BLK_S_IOERR: u32 = 1; pub const VIRTIO_BLK_S_UNSUPP: u32 = 2; diff --git a/src/vmm/src/devices/virtio/gen/virtio_net.rs b/src/vmm/src/devices/virtio/gen/virtio_net.rs index 2f8c36b021e..382657e6617 100644 --- a/src/vmm/src/devices/virtio/gen/virtio_net.rs +++ b/src/vmm/src/devices/virtio/gen/virtio_net.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -18,7 +18,11 @@ 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_ACCESS_PLATFORM: u32 = 33; pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; +pub const VIRTIO_F_RING_PACKED: u32 = 34; +pub const VIRTIO_F_ORDER_PLATFORM: u32 = 36; +pub const VIRTIO_F_SR_IOV: u32 = 37; 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; @@ -41,23 +45,226 @@ 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_HASH_REPORT: u32 = 57; +pub const VIRTIO_NET_F_RSS: u32 = 60; +pub const VIRTIO_NET_F_RSC_EXT: u32 = 61; +pub const VIRTIO_NET_F_STANDBY: u32 = 62; +pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63; pub const VIRTIO_NET_F_GSO: u32 = 6; pub type __u8 = ::std::os::raw::c_uchar; pub type __u16 = ::std::os::raw::c_ushort; +pub type __le16 = __u16; pub type __virtio16 = __u16; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Copy, Clone)] pub struct virtio_net_hdr_v1 { pub flags: __u8, pub gso_type: __u8, pub hdr_len: __virtio16, pub gso_size: __virtio16, + pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1, + pub num_buffers: __virtio16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union virtio_net_hdr_v1__bindgen_ty_1 { + pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, + pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, + pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 { pub csum_start: __virtio16, pub csum_offset: __virtio16, - pub num_buffers: __virtio16, +} +#[test] +fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!( + "Size of: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!( + "Alignment of ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).csum_start) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(csum_start) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).csum_offset) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(csum_offset) + ) + ); +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 { + pub start: __virtio16, + pub offset: __virtio16, +} +#[test] +fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!( + "Size of: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!( + "Alignment of ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(start) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(offset) + ) + ); +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 { + pub segments: __le16, + pub dup_acks: __le16, +} +#[test] +fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!( + "Size of: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!( + "Alignment of ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).segments) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3), + "::", + stringify!(segments) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dup_acks) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3), + "::", + stringify!(dup_acks) + ) + ); +} +#[test] +fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(virtio_net_hdr_v1__bindgen_ty_1)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).csum) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1), + "::", + stringify!(csum) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).rsc) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1__bindgen_ty_1), + "::", + stringify!(rsc) + ) + ); +} +impl Default for virtio_net_hdr_v1__bindgen_ty_1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } } #[test] fn bindgen_test_layout_virtio_net_hdr_v1() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, @@ -68,123 +275,63 @@ fn bindgen_test_layout_virtio_net_hdr_v1() { 2usize, concat!("Alignment of ", stringify!(virtio_net_hdr_v1)) ); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); - fn test_field_gso_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).gso_type) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(gso_type) - ) - ); - } - test_field_gso_type(); - fn test_field_hdr_len() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(hdr_len) - ) - ); - } - test_field_hdr_len(); - fn test_field_gso_size() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).gso_size) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(gso_size) - ) - ); - } - test_field_gso_size(); - fn test_field_csum_start() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).csum_start) as usize - ptr as usize - }, - 6usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(csum_start) - ) - ); - } - test_field_csum_start(); - fn test_field_csum_offset() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).csum_offset) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(csum_offset) - ) - ); - } - test_field_csum_offset(); - fn test_field_num_buffers() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).num_buffers) as usize - ptr as usize - }, - 10usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(num_buffers) - ) - ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).gso_type) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1), + "::", + stringify!(gso_type) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1), + "::", + stringify!(hdr_len) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).gso_size) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1), + "::", + stringify!(gso_size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).num_buffers) as usize - ptr as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(virtio_net_hdr_v1), + "::", + stringify!(num_buffers) + ) + ); +} +impl Default for virtio_net_hdr_v1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } } - test_field_num_buffers(); } diff --git a/src/vmm/src/devices/virtio/gen/virtio_ring.rs b/src/vmm/src/devices/virtio/gen/virtio_ring.rs index 9db5403b12f..2d78d70ec59 100644 --- a/src/vmm/src/devices/virtio/gen/virtio_ring.rs +++ b/src/vmm/src/devices/virtio/gen/virtio_ring.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh diff --git a/src/vmm/src/devices/virtio/gen/virtio_rng.rs b/src/vmm/src/devices/virtio/gen/virtio_rng.rs index 968da9b7cfc..b82afc69ea0 100644 --- a/src/vmm/src/devices/virtio/gen/virtio_rng.rs +++ b/src/vmm/src/devices/virtio/gen/virtio_rng.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh diff --git a/src/vmm/src/devices/virtio/net/gen/if_tun.rs b/src/vmm/src/devices/virtio/net/gen/if_tun.rs index 6ec1a3ca7fc..da8c88ca228 100644 --- a/src/vmm/src/devices/virtio/net/gen/if_tun.rs +++ b/src/vmm/src/devices/virtio/net/gen/if_tun.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -28,6 +28,7 @@ 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_ERSPAN2: u32 = 8939; pub const ETH_P_IP: u32 = 2048; pub const ETH_P_X25: u32 = 2053; pub const ETH_P_ARP: u32 = 2054; @@ -65,13 +66,17 @@ 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_PREAUTH: u32 = 35015; pub const ETH_P_TIPC: u32 = 35018; +pub const ETH_P_LLDP: u32 = 35020; +pub const ETH_P_MRP: u32 = 35043; 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_CFM: u32 = 35074; pub const ETH_P_FCOE: u32 = 35078; pub const ETH_P_IBOE: u32 = 35093; pub const ETH_P_TDLS: u32 = 35085; @@ -84,6 +89,7 @@ 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_DSA_8021Q: u32 = 56027; pub const ETH_P_IFE: u32 = 60734; pub const ETH_P_AF_IUCV: u32 = 64507; pub const ETH_P_802_3_MIN: u32 = 1536; @@ -113,6 +119,7 @@ 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 ETH_P_MCTP: u32 = 250; pub const TUN_READQ_SIZE: u32 = 500; pub const TUN_TYPE_MASK: u32 = 15; pub const IFF_TAP: u32 = 2; @@ -140,6 +147,8 @@ pub struct sock_filter { } #[test] fn bindgen_test_layout_sock_filter() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -150,74 +159,46 @@ fn bindgen_test_layout_sock_filter() { 4usize, concat!("Alignment of ", stringify!(sock_filter)) ); - fn test_field_code() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(code) - ) - ); - } - test_field_code(); - fn test_field_jt() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).jt) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(jt) - ) - ); - } - test_field_jt(); - fn test_field_jf() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).jf) as usize - ptr as usize - }, - 3usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(jf) - ) - ); - } - test_field_jf(); - fn test_field_k() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).k) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(k) - ) - ); - } - test_field_k(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sock_filter), + "::", + stringify!(code) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).jt) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(sock_filter), + "::", + stringify!(jt) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).jf) as usize - ptr as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(sock_filter), + "::", + stringify!(jf) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).k) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(sock_filter), + "::", + stringify!(k) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] @@ -227,6 +208,8 @@ pub struct sock_fprog { } #[test] fn bindgen_test_layout_sock_fprog() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -237,40 +220,26 @@ fn bindgen_test_layout_sock_fprog() { 8usize, concat!("Alignment of ", stringify!(sock_fprog)) ); - fn test_field_len() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sock_fprog), - "::", - stringify!(len) - ) - ); - } - test_field_len(); - fn test_field_filter() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).filter) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sock_fprog), - "::", - stringify!(filter) - ) - ); - } - test_field_filter(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sock_fprog), + "::", + stringify!(len) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).filter) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sock_fprog), + "::", + stringify!(filter) + ) + ); } impl Default for sock_fprog { fn default() -> Self { diff --git a/src/vmm/src/devices/virtio/net/gen/iff.rs b/src/vmm/src/devices/virtio/net/gen/iff.rs index 93df0cc8e53..a28214b5cf8 100644 --- a/src/vmm/src/devices/virtio/net/gen/iff.rs +++ b/src/vmm/src/devices/virtio/net/gen/iff.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -49,6 +49,8 @@ pub struct sockaddr { } #[test] fn bindgen_test_layout_sockaddr() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -59,40 +61,26 @@ fn bindgen_test_layout_sockaddr() { 2usize, concat!("Alignment of ", stringify!(sockaddr)) ); - fn test_field_sa_family() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sa_family) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr), - "::", - stringify!(sa_family) - ) - ); - } - test_field_sa_family(); - fn test_field_sa_data() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sa_data) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr), - "::", - stringify!(sa_data) - ) - ); - } - test_field_sa_data(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sa_family) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sockaddr), + "::", + stringify!(sa_family) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sa_data) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(sockaddr), + "::", + stringify!(sa_data) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -103,6 +91,8 @@ pub struct sync_serial_settings { } #[test] fn bindgen_test_layout_sync_serial_settings() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, @@ -113,57 +103,36 @@ fn bindgen_test_layout_sync_serial_settings() { 4usize, concat!("Alignment of ", stringify!(sync_serial_settings)) ); - fn test_field_clock_rate() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).clock_rate) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sync_serial_settings), - "::", - stringify!(clock_rate) - ) - ); - } - test_field_clock_rate(); - fn test_field_clock_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).clock_type) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sync_serial_settings), - "::", - stringify!(clock_type) - ) - ); - } - test_field_clock_type(); - fn test_field_loopback() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).loopback) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sync_serial_settings), - "::", - stringify!(loopback) - ) - ); - } - test_field_loopback(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).clock_rate) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(sync_serial_settings), + "::", + stringify!(clock_rate) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).clock_type) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(sync_serial_settings), + "::", + stringify!(clock_type) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).loopback) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(sync_serial_settings), + "::", + stringify!(loopback) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -175,6 +144,8 @@ pub struct te1_settings { } #[test] fn bindgen_test_layout_te1_settings() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -185,74 +156,46 @@ fn bindgen_test_layout_te1_settings() { 4usize, concat!("Alignment of ", stringify!(te1_settings)) ); - fn test_field_clock_rate() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).clock_rate) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(clock_rate) - ) - ); - } - test_field_clock_rate(); - fn test_field_clock_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).clock_type) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(clock_type) - ) - ); - } - test_field_clock_type(); - fn test_field_loopback() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).loopback) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(loopback) - ) - ); - } - test_field_loopback(); - fn test_field_slot_map() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).slot_map) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(slot_map) - ) - ); - } - test_field_slot_map(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).clock_rate) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(te1_settings), + "::", + stringify!(clock_rate) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).clock_type) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(te1_settings), + "::", + stringify!(clock_type) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).loopback) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(te1_settings), + "::", + stringify!(loopback) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).slot_map) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(te1_settings), + "::", + stringify!(slot_map) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -262,6 +205,8 @@ pub struct raw_hdlc_proto { } #[test] fn bindgen_test_layout_raw_hdlc_proto() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, @@ -272,40 +217,26 @@ fn bindgen_test_layout_raw_hdlc_proto() { 2usize, concat!("Alignment of ", stringify!(raw_hdlc_proto)) ); - fn test_field_encoding() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).encoding) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(raw_hdlc_proto), - "::", - stringify!(encoding) - ) - ); - } - test_field_encoding(); - fn test_field_parity() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).parity) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(raw_hdlc_proto), - "::", - stringify!(parity) - ) - ); - } - test_field_parity(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).encoding) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(raw_hdlc_proto), + "::", + stringify!(encoding) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).parity) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(raw_hdlc_proto), + "::", + stringify!(parity) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -320,6 +251,8 @@ pub struct fr_proto { } #[test] fn bindgen_test_layout_fr_proto() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 24usize, @@ -330,125 +263,76 @@ fn bindgen_test_layout_fr_proto() { 4usize, concat!("Alignment of ", stringify!(fr_proto)) ); - fn test_field_t391() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).t391) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(t391) - ) - ); - } - test_field_t391(); - fn test_field_t392() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).t392) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(t392) - ) - ); - } - test_field_t392(); - fn test_field_n391() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).n391) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(n391) - ) - ); - } - test_field_n391(); - fn test_field_n392() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).n392) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(n392) - ) - ); - } - test_field_n392(); - fn test_field_n393() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).n393) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(n393) - ) - ); - } - test_field_n393(); - fn test_field_lmi() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).lmi) as usize - ptr as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(lmi) - ) - ); - } - test_field_lmi(); - fn test_field_dce() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).dce) as usize - ptr as usize - }, - 22usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(dce) - ) - ); - } - test_field_dce(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).t391) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fr_proto), + "::", + stringify!(t391) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).t392) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(fr_proto), + "::", + stringify!(t392) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).n391) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(fr_proto), + "::", + stringify!(n391) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).n392) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(fr_proto), + "::", + stringify!(n392) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).n393) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(fr_proto), + "::", + stringify!(n393) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).lmi) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(fr_proto), + "::", + stringify!(lmi) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dce) as usize - ptr as usize }, + 22usize, + concat!( + "Offset of field: ", + stringify!(fr_proto), + "::", + stringify!(dce) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -457,6 +341,8 @@ pub struct fr_proto_pvc { } #[test] fn bindgen_test_layout_fr_proto_pvc() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, @@ -467,23 +353,16 @@ fn bindgen_test_layout_fr_proto_pvc() { 4usize, concat!("Alignment of ", stringify!(fr_proto_pvc)) ); - fn test_field_dlci() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).dlci) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fr_proto_pvc), - "::", - stringify!(dlci) - ) - ); - } - test_field_dlci(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dlci) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fr_proto_pvc), + "::", + stringify!(dlci) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -493,6 +372,8 @@ pub struct fr_proto_pvc_info { } #[test] fn bindgen_test_layout_fr_proto_pvc_info() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 20usize, @@ -503,40 +384,26 @@ fn bindgen_test_layout_fr_proto_pvc_info() { 4usize, concat!("Alignment of ", stringify!(fr_proto_pvc_info)) ); - fn test_field_dlci() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).dlci) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fr_proto_pvc_info), - "::", - stringify!(dlci) - ) - ); - } - test_field_dlci(); - fn test_field_master() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).master) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(fr_proto_pvc_info), - "::", - stringify!(master) - ) - ); - } - test_field_master(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dlci) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fr_proto_pvc_info), + "::", + stringify!(dlci) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).master) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(fr_proto_pvc_info), + "::", + stringify!(master) + ) + ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -546,6 +413,8 @@ pub struct cisco_proto { } #[test] fn bindgen_test_layout_cisco_proto() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -556,40 +425,111 @@ fn bindgen_test_layout_cisco_proto() { 4usize, concat!("Alignment of ", stringify!(cisco_proto)) ); - fn test_field_interval() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).interval) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(cisco_proto), - "::", - stringify!(interval) - ) - ); - } - test_field_interval(); - fn test_field_timeout() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(cisco_proto), - "::", - stringify!(timeout) - ) - ); - } - test_field_timeout(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).interval) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(cisco_proto), + "::", + stringify!(interval) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(cisco_proto), + "::", + stringify!(timeout) + ) + ); +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct x25_hdlc_proto { + pub dce: ::std::os::raw::c_ushort, + pub modulo: ::std::os::raw::c_uint, + pub window: ::std::os::raw::c_uint, + pub t1: ::std::os::raw::c_uint, + pub t2: ::std::os::raw::c_uint, + pub n2: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout_x25_hdlc_proto() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(x25_hdlc_proto)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(x25_hdlc_proto)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dce) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(x25_hdlc_proto), + "::", + stringify!(dce) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).modulo) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(x25_hdlc_proto), + "::", + stringify!(modulo) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).window) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(x25_hdlc_proto), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).t1) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(x25_hdlc_proto), + "::", + stringify!(t1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).t2) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(x25_hdlc_proto), + "::", + stringify!(t2) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).n2) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(x25_hdlc_proto), + "::", + stringify!(n2) + ) + ); } pub const net_device_flags_IFF_UP: net_device_flags = 1; pub const net_device_flags_IFF_BROADCAST: net_device_flags = 2; @@ -610,44 +550,6 @@ pub const net_device_flags_IFF_DYNAMIC: net_device_flags = 32768; pub const net_device_flags_IFF_LOWER_UP: net_device_flags = 65536; pub const net_device_flags_IFF_DORMANT: net_device_flags = 131072; pub const net_device_flags_IFF_ECHO: net_device_flags = 262144; -/// enum net_device_flags - &struct net_device flags -/// -/// These are the &struct net_device flags, they can be set by drivers, the -/// kernel and some can be triggered by userspace. Userspace can query and -/// set these flags using userspace utilities but there is also a sysfs -/// entry available for all dev flags which can be queried and set. These flags -/// are shared for all types of net_devices. The sysfs entries are available -/// via /sys/class/net//flags. Flags which can be toggled through sysfs -/// are annotated below, note that only a few flags can be toggled and some -/// other flags are always preserved from the original net_device flags -/// even if you try to set them via sysfs. Flags which are always preserved -/// are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__ -/// are annotated below as such. -/// -/// You should have a pretty good reason to be extending these flags. -/// -/// @IFF_UP: interface is up. Can be toggled through sysfs. -/// @IFF_BROADCAST: broadcast address valid. Volatile. -/// @IFF_DEBUG: turn on debugging. Can be toggled through sysfs. -/// @IFF_LOOPBACK: is a loopback net. Volatile. -/// @IFF_POINTOPOINT: interface is has p-p link. Volatile. -/// @IFF_NOTRAILERS: avoid use of trailers. Can be toggled through sysfs. -/// Volatile. -/// @IFF_RUNNING: interface RFC2863 OPER_UP. Volatile. -/// @IFF_NOARP: no ARP protocol. Can be toggled through sysfs. Volatile. -/// @IFF_PROMISC: receive all packets. Can be toggled through sysfs. -/// @IFF_ALLMULTI: receive all multicast packets. Can be toggled through -/// sysfs. -/// @IFF_MASTER: master of a load balancer. Volatile. -/// @IFF_SLAVE: slave of a load balancer. Volatile. -/// @IFF_MULTICAST: Supports multicast. Can be toggled through sysfs. -/// @IFF_PORTSEL: can set media type. Can be toggled through sysfs. -/// @IFF_AUTOMEDIA: auto media select active. Can be toggled through sysfs. -/// @IFF_DYNAMIC: dialup device with changing addresses. Can be toggled -/// through sysfs. -/// @IFF_LOWER_UP: driver signals L1 up. Volatile. -/// @IFF_DORMANT: driver signals dormant. Volatile. -/// @IFF_ECHO: echo sent packets. Volatile. pub type net_device_flags = ::std::os::raw::c_uint; pub const IF_OPER_UNKNOWN: _bindgen_ty_4 = 0; pub const IF_OPER_NOTPRESENT: _bindgen_ty_4 = 1; @@ -659,6 +561,7 @@ pub const IF_OPER_UP: _bindgen_ty_4 = 6; pub type _bindgen_ty_4 = ::std::os::raw::c_uint; pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_5 = 0; pub const IF_LINK_MODE_DORMANT: _bindgen_ty_5 = 1; +pub const IF_LINK_MODE_TESTING: _bindgen_ty_5 = 2; pub type _bindgen_ty_5 = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -672,6 +575,8 @@ pub struct ifmap { } #[test] fn bindgen_test_layout_ifmap() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 24usize, @@ -682,108 +587,66 @@ fn bindgen_test_layout_ifmap() { 8usize, concat!("Alignment of ", stringify!(ifmap)) ); - fn test_field_mem_start() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).mem_start) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(mem_start) - ) - ); - } - test_field_mem_start(); - fn test_field_mem_end() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).mem_end) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(mem_end) - ) - ); - } - test_field_mem_end(); - fn test_field_base_addr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).base_addr) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(base_addr) - ) - ); - } - test_field_base_addr(); - fn test_field_irq() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize - }, - 18usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(irq) - ) - ); - } - test_field_irq(); - fn test_field_dma() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).dma) as usize - ptr as usize - }, - 19usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(dma) - ) - ); - } - test_field_dma(); - fn test_field_port() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(port) - ) - ); - } - test_field_port(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mem_start) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifmap), + "::", + stringify!(mem_start) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).mem_end) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ifmap), + "::", + stringify!(mem_end) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).base_addr) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ifmap), + "::", + stringify!(base_addr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(ifmap), + "::", + stringify!(irq) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dma) as usize - ptr as usize }, + 19usize, + concat!( + "Offset of field: ", + stringify!(ifmap), + "::", + stringify!(dma) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(ifmap), + "::", + stringify!(port) + ) + ); } #[repr(C)] #[derive(Copy, Clone)] @@ -800,11 +663,15 @@ pub union if_settings__bindgen_ty_1 { pub fr: *mut fr_proto, pub fr_pvc: *mut fr_proto_pvc, pub fr_pvc_info: *mut fr_proto_pvc_info, + pub x25: *mut x25_hdlc_proto, pub sync: *mut sync_serial_settings, pub te1: *mut te1_settings, } #[test] fn bindgen_test_layout_if_settings__bindgen_ty_1() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -815,125 +682,86 @@ fn bindgen_test_layout_if_settings__bindgen_ty_1() { 8usize, concat!("Alignment of ", stringify!(if_settings__bindgen_ty_1)) ); - fn test_field_raw_hdlc() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).raw_hdlc) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(raw_hdlc) - ) - ); - } - test_field_raw_hdlc(); - fn test_field_cisco() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).cisco) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(cisco) - ) - ); - } - test_field_cisco(); - fn test_field_fr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).fr) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(fr) - ) - ); - } - test_field_fr(); - fn test_field_fr_pvc() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).fr_pvc) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(fr_pvc) - ) - ); - } - test_field_fr_pvc(); - fn test_field_fr_pvc_info() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).fr_pvc_info) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(fr_pvc_info) - ) - ); - } - test_field_fr_pvc_info(); - fn test_field_sync() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sync) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(sync) - ) - ); - } - test_field_sync(); - fn test_field_te1() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).te1) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(te1) - ) - ); - } - test_field_te1(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).raw_hdlc) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(raw_hdlc) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cisco) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(cisco) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fr) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(fr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fr_pvc) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(fr_pvc) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fr_pvc_info) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(fr_pvc_info) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).x25) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(x25) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sync) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(sync) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).te1) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings__bindgen_ty_1), + "::", + stringify!(te1) + ) + ); } impl Default for if_settings__bindgen_ty_1 { fn default() -> Self { @@ -946,6 +774,8 @@ impl Default for if_settings__bindgen_ty_1 { } #[test] fn bindgen_test_layout_if_settings() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -956,57 +786,36 @@ fn bindgen_test_layout_if_settings() { 8usize, concat!("Alignment of ", stringify!(if_settings)) ); - fn test_field_type() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings), - "::", - stringify!(type_) - ) - ); - } - test_field_type(); - fn test_field_size() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_settings), - "::", - stringify!(size) - ) - ); - } - test_field_size(); - fn test_field_ifs_ifsu() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifs_ifsu) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_settings), - "::", - stringify!(ifs_ifsu) - ) - ); - } - test_field_ifs_ifsu(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(if_settings), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(if_settings), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifs_ifsu) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(if_settings), + "::", + stringify!(ifs_ifsu) + ) + ); } impl Default for if_settings { fn default() -> Self { @@ -1030,6 +839,8 @@ pub union ifreq__bindgen_ty_1 { } #[test] fn bindgen_test_layout_ifreq__bindgen_ty_1() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -1040,23 +851,16 @@ fn bindgen_test_layout_ifreq__bindgen_ty_1() { 1usize, concat!("Alignment of ", stringify!(ifreq__bindgen_ty_1)) ); - fn test_field_ifrn_name() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifrn_name) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifrn_name) - ) - ); - } - test_field_ifrn_name(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifrn_name) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_1), + "::", + stringify!(ifrn_name) + ) + ); } impl Default for ifreq__bindgen_ty_1 { fn default() -> Self { @@ -1086,6 +890,8 @@ pub union ifreq__bindgen_ty_2 { } #[test] fn bindgen_test_layout_ifreq__bindgen_ty_2() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 24usize, @@ -1096,227 +902,136 @@ fn bindgen_test_layout_ifreq__bindgen_ty_2() { 8usize, concat!("Alignment of ", stringify!(ifreq__bindgen_ty_2)) ); - fn test_field_ifru_addr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_addr) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_addr) - ) - ); - } - test_field_ifru_addr(); - fn test_field_ifru_dstaddr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_dstaddr) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_dstaddr) - ) - ); - } - test_field_ifru_dstaddr(); - fn test_field_ifru_broadaddr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_broadaddr) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_broadaddr) - ) - ); - } - test_field_ifru_broadaddr(); - fn test_field_ifru_netmask() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_netmask) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_netmask) - ) - ); - } - test_field_ifru_netmask(); - fn test_field_ifru_hwaddr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_hwaddr) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_hwaddr) - ) - ); - } - test_field_ifru_hwaddr(); - fn test_field_ifru_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_flags) - ) - ); - } - test_field_ifru_flags(); - fn test_field_ifru_ivalue() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_ivalue) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_ivalue) - ) - ); - } - test_field_ifru_ivalue(); - fn test_field_ifru_mtu() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_mtu) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_mtu) - ) - ); - } - test_field_ifru_mtu(); - fn test_field_ifru_map() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_map) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_map) - ) - ); - } - test_field_ifru_map(); - fn test_field_ifru_slave() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_slave) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_slave) - ) - ); - } - test_field_ifru_slave(); - fn test_field_ifru_newname() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_newname) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_newname) - ) - ); - } - test_field_ifru_newname(); - fn test_field_ifru_data() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_data) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_data) - ) - ); - } - test_field_ifru_data(); - fn test_field_ifru_settings() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifru_settings) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_settings) - ) - ); - } - test_field_ifru_settings(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_addr) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_addr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_dstaddr) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_dstaddr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_broadaddr) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_broadaddr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_netmask) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_netmask) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_hwaddr) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_hwaddr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_ivalue) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_ivalue) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_mtu) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_mtu) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_map) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_map) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_slave) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_slave) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_newname) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_newname) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifru_settings) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq__bindgen_ty_2), + "::", + stringify!(ifru_settings) + ) + ); } impl Default for ifreq__bindgen_ty_2 { fn default() -> Self { @@ -1329,6 +1044,8 @@ impl Default for ifreq__bindgen_ty_2 { } #[test] fn bindgen_test_layout_ifreq() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 40usize, @@ -1339,40 +1056,26 @@ fn bindgen_test_layout_ifreq() { 8usize, concat!("Alignment of ", stringify!(ifreq)) ); - fn test_field_ifr_ifrn() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifr_ifrn) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq), - "::", - stringify!(ifr_ifrn) - ) - ); - } - test_field_ifr_ifrn(); - fn test_field_ifr_ifru() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifr_ifru) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifreq), - "::", - stringify!(ifr_ifru) - ) - ); - } - test_field_ifr_ifru(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifr_ifrn) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifreq), + "::", + stringify!(ifr_ifrn) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifr_ifru) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ifreq), + "::", + stringify!(ifr_ifru) + ) + ); } impl Default for ifreq { fn default() -> Self { @@ -1397,6 +1100,8 @@ pub union ifconf__bindgen_ty_1 { } #[test] fn bindgen_test_layout_ifconf__bindgen_ty_1() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -1407,40 +1112,26 @@ fn bindgen_test_layout_ifconf__bindgen_ty_1() { 8usize, concat!("Alignment of ", stringify!(ifconf__bindgen_ty_1)) ); - fn test_field_ifcu_buf() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifcu_buf) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_buf) - ) - ); - } - test_field_ifcu_buf(); - fn test_field_ifcu_req() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifcu_req) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_req) - ) - ); - } - test_field_ifcu_req(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifcu_buf) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifconf__bindgen_ty_1), + "::", + stringify!(ifcu_buf) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifcu_req) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifconf__bindgen_ty_1), + "::", + stringify!(ifcu_req) + ) + ); } impl Default for ifconf__bindgen_ty_1 { fn default() -> Self { @@ -1453,6 +1144,8 @@ impl Default for ifconf__bindgen_ty_1 { } #[test] fn bindgen_test_layout_ifconf() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -1463,40 +1156,26 @@ fn bindgen_test_layout_ifconf() { 8usize, concat!("Alignment of ", stringify!(ifconf)) ); - fn test_field_ifc_len() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifc_len) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf), - "::", - stringify!(ifc_len) - ) - ); - } - test_field_ifc_len(); - fn test_field_ifc_ifcu() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ifc_ifcu) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifconf), - "::", - stringify!(ifc_ifcu) - ) - ); - } - test_field_ifc_ifcu(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifc_len) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ifconf), + "::", + stringify!(ifc_len) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ifc_ifcu) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ifconf), + "::", + stringify!(ifc_ifcu) + ) + ); } impl Default for ifconf { fn default() -> Self { diff --git a/src/vmm/src/devices/virtio/net/gen/sockios.rs b/src/vmm/src/devices/virtio/net/gen/sockios.rs index e8a25ca53ad..9f8c8cd45f7 100644 --- a/src/vmm/src/devices/virtio/net/gen/sockios.rs +++ b/src/vmm/src/devices/virtio/net/gen/sockios.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -15,14 +15,17 @@ clippy::tests_outside_test_module )] +pub const __BITS_PER_LONG: u32 = 64; pub const FIOSETOWN: u32 = 35073; pub const SIOCSPGRP: u32 = 35074; pub const FIOGETOWN: u32 = 35075; pub const SIOCGPGRP: u32 = 35076; pub const SIOCATMARK: u32 = 35077; +pub const SIOCGSTAMP_OLD: u32 = 35078; +pub const SIOCGSTAMPNS_OLD: u32 = 35079; +pub const SOCK_IOC_TYPE: u32 = 137; pub const SIOCGSTAMP: u32 = 35078; pub const SIOCGSTAMPNS: u32 = 35079; -pub const SOCK_IOC_TYPE: u32 = 137; pub const SIOCADDRT: u32 = 35083; pub const SIOCDELRT: u32 = 35084; pub const SIOCRTMSG: u32 = 35085; diff --git a/src/vmm/src/io_uring/bindings.rs b/src/vmm/src/io_uring/bindings.rs index c15ed873807..6572b8462d5 100644 --- a/src/vmm/src/io_uring/bindings.rs +++ b/src/vmm/src/io_uring/bindings.rs @@ -1,4 +1,4 @@ -// Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -54,7 +54,17 @@ pub const IORING_SETUP_ATTACH_WQ: u32 = 32; pub const IORING_SETUP_R_DISABLED: u32 = 64; pub const IORING_FSYNC_DATASYNC: u32 = 1; pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; pub const IORING_OFF_SQ_RING: u32 = 0; pub const IORING_OFF_CQ_RING: u32 = 134217728; pub const IORING_OFF_SQES: u32 = 268435456; @@ -64,6 +74,7 @@ pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; pub const IORING_ENTER_GETEVENTS: u32 = 1; pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; pub const IORING_FEAT_NODROP: u32 = 2; pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; @@ -71,6 +82,11 @@ pub const IORING_FEAT_RW_CUR_POS: u32 = 8; pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; pub const IORING_FEAT_FAST_POLL: u32 = 32; pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; pub const IO_URING_OP_SUPPORTED: u32 = 1; pub type __u8 = ::std::os::raw::c_uchar; pub type __u16 = ::std::os::raw::c_ushort; @@ -91,6 +107,9 @@ pub struct io_uring_sqe { pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, pub user_data: __u64, pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, + pub personality: __u16, + pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, + pub __pad2: [__u64; 2usize], } #[repr(C)] #[derive(Copy, Clone)] @@ -100,6 +119,9 @@ pub union io_uring_sqe__bindgen_ty_1 { } #[test] fn bindgen_test_layout_io_uring_sqe__bindgen_ty_1() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -110,40 +132,26 @@ fn bindgen_test_layout_io_uring_sqe__bindgen_ty_1() { 8usize, concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_1)) ); - fn test_field_off() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).off) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_1), - "::", - stringify!(off) - ) - ); - } - test_field_off(); - fn test_field_addr2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).addr2) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_1), - "::", - stringify!(addr2) - ) - ); - } - test_field_addr2(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).off) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_1), + "::", + stringify!(off) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).addr2) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_1), + "::", + stringify!(addr2) + ) + ); } impl Default for io_uring_sqe__bindgen_ty_1 { fn default() -> Self { @@ -162,6 +170,9 @@ pub union io_uring_sqe__bindgen_ty_2 { } #[test] fn bindgen_test_layout_io_uring_sqe__bindgen_ty_2() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -172,40 +183,26 @@ fn bindgen_test_layout_io_uring_sqe__bindgen_ty_2() { 8usize, concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_2)) ); - fn test_field_addr() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_2), - "::", - stringify!(addr) - ) - ); - } - test_field_addr(); - fn test_field_splice_off_in() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).splice_off_in) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_2), - "::", - stringify!(splice_off_in) - ) - ); - } - test_field_splice_off_in(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_2), + "::", + stringify!(addr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).splice_off_in) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_2), + "::", + stringify!(splice_off_in) + ) + ); } impl Default for io_uring_sqe__bindgen_ty_2 { fn default() -> Self { @@ -232,9 +229,15 @@ pub union io_uring_sqe__bindgen_ty_3 { pub statx_flags: __u32, pub fadvise_advice: __u32, pub splice_flags: __u32, + pub rename_flags: __u32, + pub unlink_flags: __u32, + pub hardlink_flags: __u32, } #[test] fn bindgen_test_layout_io_uring_sqe__bindgen_ty_3() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4usize, @@ -245,227 +248,166 @@ fn bindgen_test_layout_io_uring_sqe__bindgen_ty_3() { 4usize, concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_3)) ); - fn test_field_rw_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).rw_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(rw_flags) - ) - ); - } - test_field_rw_flags(); - fn test_field_fsync_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).fsync_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(fsync_flags) - ) - ); - } - test_field_fsync_flags(); - fn test_field_poll_events() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).poll_events) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(poll_events) - ) - ); - } - test_field_poll_events(); - fn test_field_poll32_events() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).poll32_events) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(poll32_events) - ) - ); - } - test_field_poll32_events(); - fn test_field_sync_range_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sync_range_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(sync_range_flags) - ) - ); - } - test_field_sync_range_flags(); - fn test_field_msg_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).msg_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(msg_flags) - ) - ); - } - test_field_msg_flags(); - fn test_field_timeout_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).timeout_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(timeout_flags) - ) - ); - } - test_field_timeout_flags(); - fn test_field_accept_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).accept_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(accept_flags) - ) - ); - } - test_field_accept_flags(); - fn test_field_cancel_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).cancel_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(cancel_flags) - ) - ); - } - test_field_cancel_flags(); - fn test_field_open_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).open_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(open_flags) - ) - ); - } - test_field_open_flags(); - fn test_field_statx_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).statx_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(statx_flags) - ) - ); - } - test_field_statx_flags(); - fn test_field_fadvise_advice() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).fadvise_advice) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(fadvise_advice) - ) - ); - } - test_field_fadvise_advice(); - fn test_field_splice_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).splice_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(splice_flags) - ) - ); - } - test_field_splice_flags(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).rw_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(rw_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fsync_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(fsync_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).poll_events) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(poll_events) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).poll32_events) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(poll32_events) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sync_range_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(sync_range_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).msg_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(msg_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).timeout_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(timeout_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).accept_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(accept_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cancel_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(cancel_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).open_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(open_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).statx_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(statx_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fadvise_advice) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(fadvise_advice) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).splice_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(splice_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).rename_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(rename_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).unlink_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(unlink_flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).hardlink_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_3), + "::", + stringify!(hardlink_flags) + ) + ); } impl Default for io_uring_sqe__bindgen_ty_3 { fn default() -> Self { @@ -476,147 +418,49 @@ impl Default for io_uring_sqe__bindgen_ty_3 { } } } -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { - pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_4__bindgen_ty_1, - pub __pad2: [__u64; 3usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct io_uring_sqe__bindgen_ty_4__bindgen_ty_1 { - pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1, - pub personality: __u16, - pub splice_fd_in: __s32, -} #[repr(C, packed)] #[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1 { +pub union io_uring_sqe__bindgen_ty_4 { pub buf_index: __u16, pub buf_group: __u16, } #[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1() { +fn bindgen_test_layout_io_uring_sqe__bindgen_ty_4() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( - ::std::mem::size_of::(), + ::std::mem::size_of::(), 2usize, - concat!( - "Size of: ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1) - ) + concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_4)) ); assert_eq!( - ::std::mem::align_of::(), + ::std::mem::align_of::(), 1usize, - concat!( - "Alignment of ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1) - ) - ); - fn test_field_buf_index() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::< - io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1, - >::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).buf_index) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(buf_index) - ) - ); - } - test_field_buf_index(); - fn test_field_buf_group() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::< - io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1, - >::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).buf_group) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(buf_group) - ) - ); - } - test_field_buf_group(); -} -impl Default for io_uring_sqe__bindgen_ty_4__bindgen_ty_1__bindgen_ty_1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_4__bindgen_ty_1() { + concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_4)) + ); assert_eq!( - ::std::mem::size_of::(), - 8usize, + unsafe { ::std::ptr::addr_of!((*ptr).buf_index) as usize - ptr as usize }, + 0usize, concat!( - "Size of: ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1) + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_4), + "::", + stringify!(buf_index) ) ); assert_eq!( - ::std::mem::align_of::(), - 4usize, + unsafe { ::std::ptr::addr_of!((*ptr).buf_group) as usize - ptr as usize }, + 0usize, concat!( - "Alignment of ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1) - ) - ); - fn test_field_personality() { - assert_eq!( - unsafe { - let uninit = - ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).personality) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1), - "::", - stringify!(personality) - ) - ); - } - test_field_personality(); - fn test_field_splice_fd_in() { - assert_eq!( - unsafe { - let uninit = - ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).splice_fd_in) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_4__bindgen_ty_1), - "::", - stringify!(splice_fd_in) - ) - ); - } - test_field_splice_fd_in(); + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_4), + "::", + stringify!(buf_group) + ) + ); } -impl Default for io_uring_sqe__bindgen_ty_4__bindgen_ty_1 { +impl Default for io_uring_sqe__bindgen_ty_4 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { @@ -625,37 +469,49 @@ impl Default for io_uring_sqe__bindgen_ty_4__bindgen_ty_1 { } } } +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { + pub splice_fd_in: __s32, + pub file_index: __u32, +} #[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_4() { +fn bindgen_test_layout_io_uring_sqe__bindgen_ty_5() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_4)) + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_5)) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_4)) + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_5)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).splice_fd_in) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_5), + "::", + stringify!(splice_fd_in) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).file_index) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe__bindgen_ty_5), + "::", + stringify!(file_index) + ) ); - fn test_field___pad2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).__pad2) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_4), - "::", - stringify!(__pad2) - ) - ); - } - test_field___pad2(); } -impl Default for io_uring_sqe__bindgen_ty_4 { +impl Default for io_uring_sqe__bindgen_ty_5 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { @@ -666,6 +522,8 @@ impl Default for io_uring_sqe__bindgen_ty_4 { } #[test] fn bindgen_test_layout_io_uring_sqe() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, @@ -676,108 +534,86 @@ fn bindgen_test_layout_io_uring_sqe() { 8usize, concat!("Alignment of ", stringify!(io_uring_sqe)) ); - fn test_field_opcode() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).opcode) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(opcode) - ) - ); - } - test_field_opcode(); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); - fn test_field_ioprio() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ioprio) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(ioprio) - ) - ); - } - test_field_ioprio(); - fn test_field_fd() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(fd) - ) - ); - } - test_field_fd(); - fn test_field_len() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(len) - ) - ); - } - test_field_len(); - fn test_field_user_data() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).user_data) as usize - ptr as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(user_data) - ) - ); - } - test_field_user_data(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).opcode) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(opcode) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ioprio) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(ioprio) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(fd) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(len) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).user_data) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(user_data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).personality) as usize - ptr as usize }, + 42usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(personality) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).__pad2) as usize - ptr as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(io_uring_sqe), + "::", + stringify!(__pad2) + ) + ); } impl Default for io_uring_sqe { fn default() -> Self { @@ -829,10 +665,13 @@ pub const IORING_OP_SPLICE: _bindgen_ty_2 = 30; pub const IORING_OP_PROVIDE_BUFFERS: _bindgen_ty_2 = 31; pub const IORING_OP_REMOVE_BUFFERS: _bindgen_ty_2 = 32; pub const IORING_OP_TEE: _bindgen_ty_2 = 33; -pub const IORING_OP_LAST: _bindgen_ty_2 = 34; +pub const IORING_OP_SHUTDOWN: _bindgen_ty_2 = 34; +pub const IORING_OP_RENAMEAT: _bindgen_ty_2 = 35; +pub const IORING_OP_UNLINKAT: _bindgen_ty_2 = 36; +pub const IORING_OP_LAST: _bindgen_ty_2 = 37; pub type _bindgen_ty_2 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct io_uring_cqe { pub user_data: __u64, pub res: __s32, @@ -840,6 +679,8 @@ pub struct io_uring_cqe { } #[test] fn bindgen_test_layout_io_uring_cqe() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -850,62 +691,41 @@ fn bindgen_test_layout_io_uring_cqe() { 8usize, concat!("Alignment of ", stringify!(io_uring_cqe)) ); - fn test_field_user_data() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).user_data) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_cqe), - "::", - stringify!(user_data) - ) - ); - } - test_field_user_data(); - fn test_field_res() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).res) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_cqe), - "::", - stringify!(res) - ) - ); - } - test_field_res(); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_uring_cqe), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).user_data) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_cqe), + "::", + stringify!(user_data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).res) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_uring_cqe), + "::", + stringify!(res) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(io_uring_cqe), + "::", + stringify!(flags) + ) + ); } pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = 16; pub type _bindgen_ty_3 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct io_sqring_offsets { pub head: __u32, pub tail: __u32, @@ -919,6 +739,8 @@ pub struct io_sqring_offsets { } #[test] fn bindgen_test_layout_io_sqring_offsets() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 40usize, @@ -929,341 +751,217 @@ fn bindgen_test_layout_io_sqring_offsets() { 8usize, concat!("Alignment of ", stringify!(io_sqring_offsets)) ); - fn test_field_head() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).head) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(head) - ) - ); - } - test_field_head(); - fn test_field_tail() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).tail) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(tail) - ) - ); - } - test_field_tail(); - fn test_field_ring_mask() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ring_mask) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(ring_mask) - ) - ); - } - test_field_ring_mask(); - fn test_field_ring_entries() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ring_entries) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(ring_entries) - ) - ); - } - test_field_ring_entries(); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); - fn test_field_dropped() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).dropped) as usize - ptr as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(dropped) - ) - ); - } - test_field_dropped(); - fn test_field_array() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(array) - ) - ); - } - test_field_array(); - fn test_field_resv1() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv1) as usize - ptr as usize - }, - 28usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(resv1) - ) - ); - } - test_field_resv1(); - fn test_field_resv2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(resv2) - ) - ); - } - test_field_resv2(); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] -pub struct io_cqring_offsets { - pub head: __u32, - pub tail: __u32, - pub ring_mask: __u32, - pub ring_entries: __u32, - pub overflow: __u32, - pub cqes: __u32, - pub flags: __u32, - pub resv1: __u32, - pub resv2: __u64, -} -#[test] -fn bindgen_test_layout_io_cqring_offsets() { assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(io_cqring_offsets)) + unsafe { ::std::ptr::addr_of!((*ptr).head) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(head) + ) ); assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_cqring_offsets)) + unsafe { ::std::ptr::addr_of!((*ptr).tail) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(tail) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ring_mask) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(ring_mask) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ring_entries) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(ring_entries) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).dropped) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(dropped) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(array) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv1) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(resv1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(io_sqring_offsets), + "::", + stringify!(resv2) + ) + ); +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_cqring_offsets { + pub head: __u32, + pub tail: __u32, + pub ring_mask: __u32, + pub ring_entries: __u32, + pub overflow: __u32, + pub cqes: __u32, + pub flags: __u32, + pub resv1: __u32, + pub resv2: __u64, +} +#[test] +fn bindgen_test_layout_io_cqring_offsets() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(io_cqring_offsets)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(io_cqring_offsets)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).head) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(head) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).tail) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(tail) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ring_mask) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(ring_mask) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ring_entries) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(ring_entries) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).overflow) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(overflow) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cqes) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(cqes) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv1) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(resv1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(io_cqring_offsets), + "::", + stringify!(resv2) + ) ); - fn test_field_head() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).head) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(head) - ) - ); - } - test_field_head(); - fn test_field_tail() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).tail) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(tail) - ) - ); - } - test_field_tail(); - fn test_field_ring_mask() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ring_mask) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(ring_mask) - ) - ); - } - test_field_ring_mask(); - fn test_field_ring_entries() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ring_entries) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(ring_entries) - ) - ); - } - test_field_ring_entries(); - fn test_field_overflow() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).overflow) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(overflow) - ) - ); - } - test_field_overflow(); - fn test_field_cqes() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).cqes) as usize - ptr as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(cqes) - ) - ); - } - test_field_cqes(); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); - fn test_field_resv1() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv1) as usize - ptr as usize - }, - 28usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(resv1) - ) - ); - } - test_field_resv1(); - fn test_field_resv2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize - }, - 32usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(resv2) - ) - ); - } - test_field_resv2(); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct io_uring_params { pub sq_entries: __u32, pub cq_entries: __u32, @@ -1278,6 +976,8 @@ pub struct io_uring_params { } #[test] fn bindgen_test_layout_io_uring_params() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 120usize, @@ -1288,176 +988,106 @@ fn bindgen_test_layout_io_uring_params() { 8usize, concat!("Alignment of ", stringify!(io_uring_params)) ); - fn test_field_sq_entries() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sq_entries) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_entries) - ) - ); - } - test_field_sq_entries(); - fn test_field_cq_entries() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).cq_entries) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(cq_entries) - ) - ); - } - test_field_cq_entries(); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); - fn test_field_sq_thread_cpu() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sq_thread_cpu) as usize - ptr as usize - }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_thread_cpu) - ) - ); - } - test_field_sq_thread_cpu(); - fn test_field_sq_thread_idle() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sq_thread_idle) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_thread_idle) - ) - ); - } - test_field_sq_thread_idle(); - fn test_field_features() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).features) as usize - ptr as usize - }, - 20usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(features) - ) - ); - } - test_field_features(); - fn test_field_wq_fd() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).wq_fd) as usize - ptr as usize - }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(wq_fd) - ) - ); - } - test_field_wq_fd(); - fn test_field_resv() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize - }, - 28usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(resv) - ) - ); - } - test_field_resv(); - fn test_field_sq_off() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sq_off) as usize - ptr as usize - }, - 40usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_off) - ) - ); - } - test_field_sq_off(); - fn test_field_cq_off() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).cq_off) as usize - ptr as usize - }, - 80usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(cq_off) - ) - ); - } - test_field_cq_off(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sq_entries) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(sq_entries) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cq_entries) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(cq_entries) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sq_thread_cpu) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(sq_thread_cpu) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sq_thread_idle) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(sq_thread_idle) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).features) as usize - ptr as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(features) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).wq_fd) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(wq_fd) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sq_off) as usize - ptr as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(sq_off) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).cq_off) as usize - ptr as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(io_uring_params), + "::", + stringify!(cq_off) + ) + ); } pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = 0; pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = 1; @@ -1472,10 +1102,17 @@ pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = 9; pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = 10; pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = 11; pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = 12; -pub const IORING_REGISTER_LAST: _bindgen_ty_4 = 13; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = 13; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = 14; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = 15; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = 16; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = 17; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = 18; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = 19; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = 20; pub type _bindgen_ty_4 = ::std::os::raw::c_uint; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct io_uring_files_update { pub offset: __u32, pub resv: __u32, @@ -1483,6 +1120,9 @@ pub struct io_uring_files_update { } #[test] fn bindgen_test_layout_io_uring_files_update() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -1493,60 +1133,252 @@ fn bindgen_test_layout_io_uring_files_update() { 8usize, concat!("Alignment of ", stringify!(io_uring_files_update)) ); - fn test_field_offset() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_files_update), - "::", - stringify!(offset) - ) - ); - } - test_field_offset(); - fn test_field_resv() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_files_update), - "::", - stringify!(resv) - ) - ); - } - test_field_resv(); - fn test_field_fds() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).fds) as usize - ptr as usize - }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_files_update), - "::", - stringify!(fds) - ) - ); - } - test_field_fds(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_files_update), + "::", + stringify!(offset) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_files_update), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).fds) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_uring_files_update), + "::", + stringify!(fds) + ) + ); } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_rsrc_register { + pub nr: __u32, + pub resv: __u32, + pub resv2: __u64, + pub data: __u64, + pub tags: __u64, +} +#[test] +fn bindgen_test_layout_io_uring_rsrc_register() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(io_uring_rsrc_register)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(io_uring_rsrc_register)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_register), + "::", + stringify!(nr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_register), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_register), + "::", + stringify!(resv2) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_register), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).tags) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_register), + "::", + stringify!(tags) + ) + ); +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_rsrc_update { + pub offset: __u32, + pub resv: __u32, + pub data: __u64, +} +#[test] +fn bindgen_test_layout_io_uring_rsrc_update() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(io_uring_rsrc_update)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(io_uring_rsrc_update)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update), + "::", + stringify!(offset) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_rsrc_update2 { + pub offset: __u32, + pub resv: __u32, + pub data: __u64, + pub tags: __u64, + pub nr: __u32, + pub resv2: __u32, +} +#[test] +fn bindgen_test_layout_io_uring_rsrc_update2() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(io_uring_rsrc_update2)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(io_uring_rsrc_update2)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update2), + "::", + stringify!(offset) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update2), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update2), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).tags) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update2), + "::", + stringify!(tags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update2), + "::", + stringify!(nr) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(io_uring_rsrc_update2), + "::", + stringify!(resv2) + ) + ); +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct io_uring_probe_op { pub op: __u8, pub resv: __u8, @@ -1555,6 +1387,8 @@ pub struct io_uring_probe_op { } #[test] fn bindgen_test_layout_io_uring_probe_op() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, @@ -1565,74 +1399,46 @@ fn bindgen_test_layout_io_uring_probe_op() { 4usize, concat!("Alignment of ", stringify!(io_uring_probe_op)) ); - fn test_field_op() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(op) - ) - ); - } - test_field_op(); - fn test_field_resv() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(resv) - ) - ); - } - test_field_resv(); - fn test_field_flags() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(flags) - ) - ); - } - test_field_flags(); - fn test_field_resv2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(resv2) - ) - ); - } - test_field_resv2(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe_op), + "::", + stringify!(op) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe_op), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe_op), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe_op), + "::", + stringify!(resv2) + ) + ); } #[repr(C)] #[derive(Debug, Default)] @@ -1645,6 +1451,8 @@ pub struct io_uring_probe { } #[test] fn bindgen_test_layout_io_uring_probe() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -1655,91 +1463,56 @@ fn bindgen_test_layout_io_uring_probe() { 4usize, concat!("Alignment of ", stringify!(io_uring_probe)) ); - fn test_field_last_op() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).last_op) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(last_op) - ) - ); - } - test_field_last_op(); - fn test_field_ops_len() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ops_len) as usize - ptr as usize - }, - 1usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(ops_len) - ) - ); - } - test_field_ops_len(); - fn test_field_resv() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize - }, - 2usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(resv) - ) - ); - } - test_field_resv(); - fn test_field_resv2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(resv2) - ) - ); - } - test_field_resv2(); - fn test_field_ops() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).ops) as usize - ptr as usize - }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(ops) - ) - ); - } - test_field_ops(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).last_op) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe), + "::", + stringify!(last_op) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ops_len) as usize - ptr as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe), + "::", + stringify!(ops_len) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe), + "::", + stringify!(resv2) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ops) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(io_uring_probe), + "::", + stringify!(ops) + ) + ); } #[repr(C)] #[derive(Copy, Clone)] @@ -1758,6 +1531,9 @@ pub union io_uring_restriction__bindgen_ty_1 { } #[test] fn bindgen_test_layout_io_uring_restriction__bindgen_ty_1() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 1usize, @@ -1771,60 +1547,36 @@ fn bindgen_test_layout_io_uring_restriction__bindgen_ty_1() { stringify!(io_uring_restriction__bindgen_ty_1) ) ); - fn test_field_register_op() { - assert_eq!( - unsafe { - let uninit = - ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).register_op) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction__bindgen_ty_1), - "::", - stringify!(register_op) - ) - ); - } - test_field_register_op(); - fn test_field_sqe_op() { - assert_eq!( - unsafe { - let uninit = - ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sqe_op) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction__bindgen_ty_1), - "::", - stringify!(sqe_op) - ) - ); - } - test_field_sqe_op(); - fn test_field_sqe_flags() { - assert_eq!( - unsafe { - let uninit = - ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).sqe_flags) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction__bindgen_ty_1), - "::", - stringify!(sqe_flags) - ) - ); - } - test_field_sqe_flags(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).register_op) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_restriction__bindgen_ty_1), + "::", + stringify!(register_op) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sqe_op) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_restriction__bindgen_ty_1), + "::", + stringify!(sqe_op) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sqe_flags) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_restriction__bindgen_ty_1), + "::", + stringify!(sqe_flags) + ) + ); } impl Default for io_uring_restriction__bindgen_ty_1 { fn default() -> Self { @@ -1837,6 +1589,8 @@ impl Default for io_uring_restriction__bindgen_ty_1 { } #[test] fn bindgen_test_layout_io_uring_restriction() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, @@ -1847,57 +1601,36 @@ fn bindgen_test_layout_io_uring_restriction() { 4usize, concat!("Alignment of ", stringify!(io_uring_restriction)) ); - fn test_field_opcode() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).opcode) as usize - ptr as usize - }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction), - "::", - stringify!(opcode) - ) - ); - } - test_field_opcode(); - fn test_field_resv() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize - }, - 3usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction), - "::", - stringify!(resv) - ) - ); - } - test_field_resv(); - fn test_field_resv2() { - assert_eq!( - unsafe { - let uninit = ::std::mem::MaybeUninit::::uninit(); - let ptr = uninit.as_ptr(); - ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize - }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction), - "::", - stringify!(resv2) - ) - ); - } - test_field_resv2(); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).opcode) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_restriction), + "::", + stringify!(opcode) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(io_uring_restriction), + "::", + stringify!(resv) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(io_uring_restriction), + "::", + stringify!(resv2) + ) + ); } impl Default for io_uring_restriction { fn default() -> Self { @@ -1908,9 +1641,73 @@ impl Default for io_uring_restriction { } } } -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_5 = 0; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_5 = 1; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_5 = 2; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_5 = 3; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_5 = 4; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = 0; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = 1; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = 2; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = 3; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = 4; +pub type _bindgen_ty_6 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_getevents_arg { + pub sigmask: __u64, + pub sigmask_sz: __u32, + pub pad: __u32, + pub ts: __u64, +} +#[test] +fn bindgen_test_layout_io_uring_getevents_arg() { + const UNINIT: ::std::mem::MaybeUninit = + ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(io_uring_getevents_arg)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(io_uring_getevents_arg)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sigmask) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(io_uring_getevents_arg), + "::", + stringify!(sigmask) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).sigmask_sz) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(io_uring_getevents_arg), + "::", + stringify!(sigmask_sz) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(io_uring_getevents_arg), + "::", + stringify!(pad) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).ts) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(io_uring_getevents_arg), + "::", + stringify!(ts) + ) + ); +} diff --git a/tools/bindgen-patches/0001-change-c_char-to-c_uchar-in-ifrn_name.patch b/tools/bindgen-patches/0001-change-c_char-to-c_uchar-in-ifrn_name.patch new file mode 100644 index 00000000000..71b5cfa76e7 --- /dev/null +++ b/tools/bindgen-patches/0001-change-c_char-to-c_uchar-in-ifrn_name.patch @@ -0,0 +1,26 @@ +From 8faa5d38ebe9b6bd27fda01dd8f54d3d91583166 Mon Sep 17 00:00:00 2001 +From: Takahiro Itazuri +Date: Fri, 22 Mar 2024 21:13:26 +0000 +Subject: [PATCH] change c_char to c_uchar in ifrn_name + +Signed-off-by: Takahiro Itazuri +--- + src/vmm/src/devices/virtio/net/gen/iff.rs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/vmm/src/devices/virtio/net/gen/iff.rs b/src/vmm/src/devices/virtio/net/gen/iff.rs +index 04e38396..54111c6b 100644 +--- a/src/vmm/src/devices/virtio/net/gen/iff.rs ++++ b/src/vmm/src/devices/virtio/net/gen/iff.rs +@@ -836,7 +836,7 @@ pub struct ifreq { + #[repr(C)] + #[derive(Copy, Clone)] + pub union ifreq__bindgen_ty_1 { +- pub ifrn_name: [::std::os::raw::c_char; 16usize], ++ pub ifrn_name: [::std::os::raw::c_uchar; 16usize], + } + #[test] + fn bindgen_test_layout_ifreq__bindgen_ty_1() { +-- +2.40.1 + diff --git a/tools/bindgen-patches/net_gen/0001-change-c-char-to-c-uchar-in-ifrn-name.patch b/tools/bindgen-patches/net_gen/0001-change-c-char-to-c-uchar-in-ifrn-name.patch deleted file mode 100644 index 21cb3274f60..00000000000 --- a/tools/bindgen-patches/net_gen/0001-change-c-char-to-c-uchar-in-ifrn-name.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/iff.rs 2022-05-24 21:21:30.126264289 +0200 -+++ b/src/iff.rs 2022-05-24 21:21:58.758061199 +0200 -@@ -3303,7 +3303,7 @@ - #[repr(C)] - #[derive(Copy, Clone)] - pub union ifreq__bindgen_ty_1 { -- pub ifrn_name: [::std::os::raw::c_char; 16usize], -+ pub ifrn_name: [::std::os::raw::c_uchar; 16usize], - } - #[test] - fn bindgen_test_layout_ifreq__bindgen_ty_1() { diff --git a/tools/bindgen.sh b/tools/bindgen.sh index c8873fc6c27..5c81efffe4f 100755 --- a/tools/bindgen.sh +++ b/tools/bindgen.sh @@ -4,9 +4,9 @@ # SPDX-License-Identifier: Apache-2.0 # ./tools/devtool shell --privileged -# bindgen-0.60 has a dependency that needs Rust edition 2021 -# cargo +stable install bindgen +# cargo install bindgen-cli # apt update && apt install patch +# ./tools/bindgen.sh set -eu @@ -39,7 +39,7 @@ function fc-bindgen { )] EOF - bindgen --disable-header-comment --size_t-is-usize --constified-enum '*' --with-derive-default --with-derive-partialeq $@ + bindgen --no-doc-comments --disable-header-comment --constified-enum '*' --with-derive-default --with-derive-partialeq $@ } KERNEL_HEADERS_HOME="/usr" @@ -90,6 +90,12 @@ fc-bindgen \ --allowlist-var "VIRTIO_F_.*" \ "$KERNEL_HEADERS_HOME/include/linux/virtio_rng.h" >src/vmm/src/devices/virtio/gen/virtio_rng.rs +info "BINDGEN prctl.h" +fc-bindgen \ + --allowlist-var "PR_.*" \ + "$KERNEL_HEADERS_HOME/include/linux/prctl.h" >src/firecracker/src/gen/prctl.rs +sed -i '/PR_SET_SPECULATION_CTRL/s/u32/i32/g' src/firecracker/src/gen/prctl.rs + # https://www.kernel.org/doc/Documentation/kbuild/headers_install.txt # The Linux repo is huge. Just copy what we need. # git clone --branch v5.10 --depth 1 https://github.com/torvalds/linux.git linux @@ -147,15 +153,12 @@ fc-bindgen \ --allowlist-type "io_uring_.+" \ --allowlist-type "io_.qring_offsets" \ "amazonlinux-v5.10.y/include/uapi/linux/io_uring.h" \ - >src/io_uring/src/bindings.rs + >src/vmm/src/io_uring/bindings.rs # Apply any patches -# src/virtio_gen -for crate in src/vmm/src/devices/virtio/net/gen/; do - for patch in $(dirname $0)/bindgen-patches/$(basename $crate)/*.patch; do - echo PATCH $crate/$patch - (cd $crate; patch -p1) <$patch - done +info "Apply patches" +for PATCH in $(dirname $0)/bindgen-patches/*.patch; do + patch -p1 <$PATCH done echo "Bindings created correctly! You might want to run ./tools/test_bindings.py to test for ABI incompatibilities"