kvm-bindings-0.10.0/.buildkite/custom-tests.json000064400000000000000000000020561046102023000176740ustar 00000000000000{ "tests": [ { "test_name": "build-fam-gnu", "command": "cargo build --release --features=fam-wrappers", "platform": [ "x86_64", "aarch64", "riscv64" ] }, { "test_name": "build-fam-musl", "command": "cargo build --release --features=fam-wrappers --target {target_platform}-unknown-linux-musl", "platform": [ "x86_64", "aarch64" ] }, { "test_name": "build-serde-gnu", "command": "cargo build --release --features=serde", "platform": [ "x86_64", "aarch64", "riscv64" ] }, { "test_name": "build-serde-musl", "command": "cargo build --release --features=serde --target {target_platform}-unknown-linux-musl", "platform": [ "x86_64", "aarch64" ] } ] } kvm-bindings-0.10.0/.cargo/config000064400000000000000000000004351046102023000146350ustar 00000000000000# This workaround is needed because the linker is unable to find __addtf3, # __multf3 and __subtf3. # Related issue: https://github.com/rust-lang/compiler-builtins/issues/201 [target.aarch64-unknown-linux-musl] rustflags = [ "-C", "target-feature=+crt-static", "-C", "link-arg=-lgcc"] kvm-bindings-0.10.0/.cargo_vcs_info.json0000644000000001360000000000100135020ustar { "git": { "sha1": "e2d88c0fd673f850ea7172a295af78084ceb5411" }, "path_in_vcs": "" }kvm-bindings-0.10.0/.github/dependabot.yml000064400000000000000000000002101046102023000164530ustar 00000000000000version: 2 updates: - package-ecosystem: gitsubmodule directory: "/" schedule: interval: monthly open-pull-requests-limit: 10 kvm-bindings-0.10.0/.gitignore000064400000000000000000000000441046102023000142600ustar 00000000000000/target **/*.rs.bk Cargo.lock .idea kvm-bindings-0.10.0/.gitmodules000064400000000000000000000001411046102023000144430ustar 00000000000000[submodule "rust-vmm-ci"] path = rust-vmm-ci url = https://github.com/rust-vmm/rust-vmm-ci.git kvm-bindings-0.10.0/.platform000064400000000000000000000000271046102023000141160ustar 00000000000000x86_64 aarch64 riscv64 kvm-bindings-0.10.0/CHANGELOG.md000064400000000000000000000042761046102023000141140ustar 00000000000000# Changelog ## [Unreleased] ### Added ### Changed ### Removed ## [0.10.0] ### Added - RISC-V KVM bindings for Linux kernel v6.9, including serialization support. ## [0.9.1] ### Changed - Fixed and validated manual (De)Serialize implementations to work with `serde_json` crate. ## [0.9.0] ### Changed - Replaced the v6.2 bindings of arm64, x86\_64 with the v6.9 ones. ### Removed - Removed v6.2 bindings. ## [0.8.2] ### Changed - Improve performance of bindings deserialization by \~5% by avoiding a temporary allocation. ## [0.8.1] ### Fixed - Implement `Default` for `kvm_xsave2`, which fixes usage of `Xsave` unconditionally causing compile errors in downstream crates. ## [0.8.0] ### Added - An opt-in feature `serde` that enables [`serde`](https://serde.rs)-based (de)serialization of various bindings. ## [0.7.0] ### Changed - API change in the bindings from upstream kernel changes: * system\_event has been made into a new union - The x86 module has been renamed to x86\_64 for consistency (matches the kernel architecture directory name) - Added all features to the generated docs.rs documentation. ### Removed - Dropped "x86" (32-bit) x86 support ## [0.6.0] ### Changed - Updated vmm-sys-utils dependency to 0.11.0 - Switched to specifying dependencies using caret requirements instead of comparision requirements ### Added - Implement `PartialEq` for fam\_wrappers ## [0.5.0] ### Changed - Replaced the v4.20 bindings with the v5.13 ones. ### Removed - Removed v4.14 bindings. ## [0.4.0] - vmm-sys-utils dependency bumped to match kvm-ioctls. ## [0.3.0] ### Added - Enabled `fam-wrappers` support on arm and arm64. - Added fam-wrapper for the arm specific `kvm_reg_list` struct. ## [0.2.0] ### Added - Added opt-in feature `fam-wrappers` that enables exporting safe wrappers over generated structs with flexible array members. This optional feature has an external dependency on `vmm-sys-util`. - Added safe fam-wrappers for `kvm_msr_list`, `kvm_msrs`, and `kvm_cpuid2`. ## [0.1.1] ### Changed - Do not enforce rust Edition 2018. ## [0.1.0] ### Added - KVM bindings for Linux kernel version 4.14 and 4.20 with support for arm, arm64, x86 and x86_64. kvm-bindings-0.10.0/CODEOWNERS000064400000000000000000000001331046102023000136620ustar 00000000000000# Add the list of code owners here (using their GitHub username) * gatekeeper-PullAssigner kvm-bindings-0.10.0/CONTRIBUTING.md000064400000000000000000000071331046102023000145270ustar 00000000000000# Contributing to kvm-bindings ## Dependencies ### Bindgen The bindings are currently generated using [bindgen](https://crates.io/crates/bindgen) version 0.64.0: ```bash cargo install bindgen-cli --vers 0.64.0 ``` ### Linux Kernel Generating bindings depends on the Linux kernel, so you need to have the repository on your machine: ```bash git clone https://github.com/torvalds/linux.git ``` ## Updating bindings / adding a new architecture When adding a new architecture, the bindings must be generated for all existing versions for consistency reasons. ### Example for arm64 and kernel version 6.9 For this example we assume that you have both linux and kvm-bindings repositories in your root. ```bash # Step 1 (if adding a new architecture): Create a new module using the name of the architecture in src/ pushd kvm-bindings mkdir src/arm64 popd # linux is the repository that you cloned at the previous step. pushd linux # Step 2: Checkout the version you want to generate the bindings for. git checkout v6.9 # Step 3: Generate the bindings. # This will generate the headers for the targeted architecture and place them # in the user specified directory export ARCH=arm64 make headers_install ARCH=$ARCH INSTALL_HDR_PATH="$ARCH"_headers pushd "$ARCH"_headers bindgen include/linux/kvm.h -o bindings.rs \ --impl-debug --with-derive-default \ --with-derive-partialeq --impl-partialeq \ -- -Iinclude popd # Step 4: Copy the generated file to the arm64 module. popd cp linux/"$ARCH"_headers/bindings.rs kvm-bindings/src/arm64 ``` Steps 2, 3 and 4 must be repeated for all existing architectures. Now that we have the bindings generated, for a new architecture we can copy the module file from one of the existing modules. ```bash cp arm/mod.rs arm64/ ``` Also, you will need to add the new architecture to `kvm-bindings/lib.rs`. When regenerating bindings, care must be taken to re-add various `zerocopy` derives under the `serde` feature. All items that require derives are listed in the `x86_64/serialize.rs` and `arm64/serialize.rs` inside the `serde_impls!` macro invocation, and missing derives will cause these modules to fail compilation. For all items listed here, the following derive should be present: ```rs #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] ``` Any types whose name contains a suffix akin to `__bindgen_ty_` and which is contained in any struct listed in `serialize.rs` will also need to have this derive added (otherwise compilation will fail). Note that these types are not explicitly listed in `serialize.rs`, as their names can change across `bindgen.rs` versions. Lastly, in `x86_64/bindings.rs`, the derives also need to be added to `struct __BindgenBitfieldUnit` and `struct __IncompleteArrayField`. Additionally, these structs need to have their layout changed from `#[repr(C)]` to `#[repr(transparent)]`. This is needed because `zerocopy` traits can only be derived on generic structures that are `repr(transparent)` or `repr(packed)`. ### Future Improvements All the above steps are scriptable, so in the next iteration I will add a script to generate the bindings. # Testing This crate is tested using [rust-vmm-ci](https://github.com/rust-vmm/rust-vmm-ci) and [Buildkite](https://buildkite.com/) pipelines. Each new feature added to this crate must be accompanied by Buildkite steps for testing the following: - Release builds (using musl/gnu) with the new feature on arm and x86 - Coverage test as specified in the [rust-vmm-ci readme](https://github.com/rust-vmm/rust-vmm-ci#getting-started-with-rust-vmm-ci). kvm-bindings-0.10.0/Cargo.toml0000644000000026370000000000100115100ustar # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO # # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies # to registry (e.g., crates.io) dependencies. # # If you are reading this file be aware that the original Cargo.toml # will likely look very different (and much more reasonable). # See Cargo.toml.orig for the original contents. [package] name = "kvm-bindings" version = "0.10.0" authors = ["Amazon firecracker team "] build = false autobins = false autoexamples = false autotests = false autobenches = false description = "Rust FFI bindings to KVM generated using bindgen." readme = "README.md" keywords = ["kvm"] license = "Apache-2.0" repository = "https://github.com/rust-vmm/kvm-bindings" [package.metadata.docs.rs] all-features = true rustdoc-args = [ "--cfg", "docsrs", ] [lib] name = "kvm_bindings" path = "src/lib.rs" [dependencies.serde] version = "1.0.0" features = ["derive"] optional = true [dependencies.vmm-sys-util] version = "0.12.1" optional = true [dependencies.zerocopy] version = "0.7.32" features = ["derive"] optional = true [dev-dependencies.bincode] version = "1.3.3" [dev-dependencies.serde_json] version = "1.0.125" [features] fam-wrappers = ["vmm-sys-util"] serde = [ "dep:serde", "serde/derive", "dep:zerocopy", ] kvm-bindings-0.10.0/Cargo.toml.orig000064400000000000000000000017141046102023000151640ustar 00000000000000[package] name = "kvm-bindings" version = "0.10.0" authors = ["Amazon firecracker team "] description = "Rust FFI bindings to KVM generated using bindgen." repository = "https://github.com/rust-vmm/kvm-bindings" readme = "README.md" keywords = ["kvm"] license = "Apache-2.0" [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [features] fam-wrappers = ["vmm-sys-util"] # It is not needed to enable the `serde` feature of `vmm-sys-util` here, because due to how cargo merges features, # if a downstream crate enables vmm-sys-util in its Cargo.toml, it will get enabled globally. serde = ["dep:serde", "serde/derive", "dep:zerocopy"] [dependencies] vmm-sys-util = { version = "0.12.1", optional = true } serde = { version = "1.0.0", optional = true, features = ["derive"] } zerocopy = { version = "0.7.32", optional = true, features = ["derive"] } [dev-dependencies] bincode = "1.3.3" serde_json = "1.0.125" kvm-bindings-0.10.0/LICENSE000064400000000000000000000261361046102023000133070ustar 00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. kvm-bindings-0.10.0/README.md000064400000000000000000000042151046102023000135530ustar 00000000000000[![Crates.io](https://img.shields.io/crates/v/kvm-bindings.svg)](https://crates.io/crates/kvm-bindings) ![](https://img.shields.io/crates/l/kvm-bindings.svg) # kvm-bindings Rust FFI bindings to KVM, generated using [bindgen](https://crates.io/crates/bindgen). It currently has support for the following target architectures: - x86_64 - arm64 - riscv64 The bindings exported by this crate are statically generated using header files associated with a specific kernel version, and are not automatically synced with the kernel version running on a particular host. The user must ensure that specific structures, members, or constants are supported and valid for the kernel version they are using. For example, the `immediate_exit` field from the `kvm_run` structure is only meaningful if the `KVM_CAP_IMMEDIATE_EXIT` capability is available. Using invalid fields or features may lead to undefined behaviour. ## Usage First, add the following to your `Cargo.toml`: ```toml kvm-bindings = "0.3" ``` Next, add this to your crate root: ```rust extern crate kvm_bindings; ``` This crate also offers safe wrappers over FAM structs - FFI structs that have a Flexible Array Member in their definition. These safe wrappers can be used if the `fam-wrappers` feature is enabled for this crate. Example: ```toml kvm-bindings = { version = "0.3", features = ["fam-wrappers"]} ``` ## Dependencies The crate has an `optional` dependency to [vmm-sys-util](https://crates.io/crates/vmm-sys-util) when enabling the `fam-wrappers` feature. It also has an optional dependency on [`serde`](serde.rs) when enabling the `serde` feature, to allow serialization of bindings. Serialization of bindings happens as opaque binary blobs via [`zerocopy`](https://google.github.io/comprehensive-rust/bare-metal/useful-crates/zerocopy.html). Due to the kernel's ABI compatibility, this means that bindings serialized in version `x` of `kvm-bindings` can be deserialized in version `y` of the crate, even if the bindings have had been regenerated in the meantime. ## Regenerating Bindings Please see [`CONTRIBUTING.md`](CONTRIBUTING.md) for details on how to generate the bindings or add support for new architectures.kvm-bindings-0.10.0/coverage_config_aarch64.json000064400000000000000000000001351046102023000176140ustar 00000000000000{ "coverage_score": 60.9, "exclude_path": "", "crate_features": "fam-wrappers,serde" } kvm-bindings-0.10.0/coverage_config_x86_64.json000064400000000000000000000001551046102023000173240ustar 00000000000000{ "coverage_score": 79.17, "exclude_path": ".*bindings\\.rs", "crate_features": "fam-wrappers,serde" } kvm-bindings-0.10.0/src/arm64/bindings.rs000064400000000000000000007700621046102023000161710ustar 00000000000000/* automatically generated by rust-bindgen 0.64.0 */ #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); impl __IncompleteArrayField { #[inline] pub const fn new() -> Self { __IncompleteArrayField(::std::marker::PhantomData, []) } #[inline] pub fn as_ptr(&self) -> *const T { self as *const _ as *const T } #[inline] pub fn as_mut_ptr(&mut self) -> *mut T { self as *mut _ as *mut T } #[inline] pub unsafe fn as_slice(&self, len: usize) -> &[T] { ::std::slice::from_raw_parts(self.as_ptr(), len) } #[inline] pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } } impl ::std::fmt::Debug for __IncompleteArrayField { fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { fmt.write_str("__IncompleteArrayField") } } pub const __BITS_PER_LONG: u32 = 64; pub const __BITS_PER_LONG_LONG: u32 = 64; pub const __FD_SETSIZE: u32 = 1024; pub const _IOC_NRBITS: u32 = 8; pub const _IOC_TYPEBITS: u32 = 8; pub const _IOC_SIZEBITS: u32 = 14; pub const _IOC_DIRBITS: u32 = 2; pub const _IOC_NRMASK: u32 = 255; pub const _IOC_TYPEMASK: u32 = 255; pub const _IOC_SIZEMASK: u32 = 16383; pub const _IOC_DIRMASK: u32 = 3; pub const _IOC_NRSHIFT: u32 = 0; pub const _IOC_TYPESHIFT: u32 = 8; pub const _IOC_SIZESHIFT: u32 = 16; pub const _IOC_DIRSHIFT: u32 = 30; pub const _IOC_NONE: u32 = 0; pub const _IOC_WRITE: u32 = 1; pub const _IOC_READ: u32 = 2; pub const IOC_IN: u32 = 1073741824; pub const IOC_OUT: u32 = 2147483648; pub const IOC_INOUT: u32 = 3221225472; pub const IOCSIZE_MASK: u32 = 1073676288; pub const IOCSIZE_SHIFT: u32 = 16; pub const KVM_SPSR_EL1: u32 = 0; pub const KVM_SPSR_SVC: u32 = 0; pub const KVM_SPSR_ABT: u32 = 1; pub const KVM_SPSR_UND: u32 = 2; pub const KVM_SPSR_IRQ: u32 = 3; pub const KVM_SPSR_FIQ: u32 = 4; pub const KVM_NR_SPSR: u32 = 5; pub const PSCI_0_2_FN_BASE: u32 = 2214592512; pub const PSCI_0_2_64BIT: u32 = 1073741824; pub const PSCI_0_2_FN64_BASE: u32 = 3288334336; pub const PSCI_0_2_POWER_STATE_ID_MASK: u32 = 65535; pub const PSCI_0_2_POWER_STATE_ID_SHIFT: u32 = 0; pub const PSCI_0_2_POWER_STATE_TYPE_SHIFT: u32 = 16; pub const PSCI_0_2_POWER_STATE_TYPE_MASK: u32 = 65536; pub const PSCI_0_2_POWER_STATE_AFFL_SHIFT: u32 = 24; pub const PSCI_0_2_POWER_STATE_AFFL_MASK: u32 = 50331648; pub const PSCI_1_0_EXT_POWER_STATE_ID_MASK: u32 = 268435455; pub const PSCI_1_0_EXT_POWER_STATE_ID_SHIFT: u32 = 0; pub const PSCI_1_0_EXT_POWER_STATE_TYPE_SHIFT: u32 = 30; pub const PSCI_1_0_EXT_POWER_STATE_TYPE_MASK: u32 = 1073741824; pub const PSCI_0_2_AFFINITY_LEVEL_ON: u32 = 0; pub const PSCI_0_2_AFFINITY_LEVEL_OFF: u32 = 1; pub const PSCI_0_2_AFFINITY_LEVEL_ON_PENDING: u32 = 2; pub const PSCI_0_2_TOS_UP_MIGRATE: u32 = 0; pub const PSCI_0_2_TOS_UP_NO_MIGRATE: u32 = 1; pub const PSCI_0_2_TOS_MP: u32 = 2; pub const PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET: u32 = 0; pub const PSCI_1_1_RESET_TYPE_VENDOR_START: u32 = 2147483648; pub const PSCI_VERSION_MAJOR_SHIFT: u32 = 16; pub const PSCI_VERSION_MINOR_MASK: u32 = 65535; pub const PSCI_VERSION_MAJOR_MASK: i32 = -65536; pub const PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT: u32 = 1; pub const PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK: u32 = 2; pub const PSCI_1_0_SUSPEND_MODE_PC: u32 = 0; pub const PSCI_1_0_SUSPEND_MODE_OSI: u32 = 1; pub const PSCI_RET_SUCCESS: u32 = 0; pub const PSCI_RET_NOT_SUPPORTED: i32 = -1; pub const PSCI_RET_INVALID_PARAMS: i32 = -2; pub const PSCI_RET_DENIED: i32 = -3; pub const PSCI_RET_ALREADY_ON: i32 = -4; pub const PSCI_RET_ON_PENDING: i32 = -5; pub const PSCI_RET_INTERNAL_FAILURE: i32 = -6; pub const PSCI_RET_NOT_PRESENT: i32 = -7; pub const PSCI_RET_DISABLED: i32 = -8; pub const PSCI_RET_INVALID_ADDRESS: i32 = -9; pub const HWCAP_FP: u32 = 1; pub const HWCAP_ASIMD: u32 = 2; pub const HWCAP_EVTSTRM: u32 = 4; pub const HWCAP_AES: u32 = 8; pub const HWCAP_PMULL: u32 = 16; pub const HWCAP_SHA1: u32 = 32; pub const HWCAP_SHA2: u32 = 64; pub const HWCAP_CRC32: u32 = 128; pub const HWCAP_ATOMICS: u32 = 256; pub const HWCAP_FPHP: u32 = 512; pub const HWCAP_ASIMDHP: u32 = 1024; pub const HWCAP_CPUID: u32 = 2048; pub const HWCAP_ASIMDRDM: u32 = 4096; pub const HWCAP_JSCVT: u32 = 8192; pub const HWCAP_FCMA: u32 = 16384; pub const HWCAP_LRCPC: u32 = 32768; pub const HWCAP_DCPOP: u32 = 65536; pub const HWCAP_SHA3: u32 = 131072; pub const HWCAP_SM3: u32 = 262144; pub const HWCAP_SM4: u32 = 524288; pub const HWCAP_ASIMDDP: u32 = 1048576; pub const HWCAP_SHA512: u32 = 2097152; pub const HWCAP_SVE: u32 = 4194304; pub const HWCAP_ASIMDFHM: u32 = 8388608; pub const HWCAP_DIT: u32 = 16777216; pub const HWCAP_USCAT: u32 = 33554432; pub const HWCAP_ILRCPC: u32 = 67108864; pub const HWCAP_FLAGM: u32 = 134217728; pub const HWCAP_SSBS: u32 = 268435456; pub const HWCAP_SB: u32 = 536870912; pub const HWCAP_PACA: u32 = 1073741824; pub const HWCAP_PACG: u32 = 2147483648; pub const HWCAP2_DCPODP: u32 = 1; pub const HWCAP2_SVE2: u32 = 2; pub const HWCAP2_SVEAES: u32 = 4; pub const HWCAP2_SVEPMULL: u32 = 8; pub const HWCAP2_SVEBITPERM: u32 = 16; pub const HWCAP2_SVESHA3: u32 = 32; pub const HWCAP2_SVESM4: u32 = 64; pub const HWCAP2_FLAGM2: u32 = 128; pub const HWCAP2_FRINT: u32 = 256; pub const HWCAP2_SVEI8MM: u32 = 512; pub const HWCAP2_SVEF32MM: u32 = 1024; pub const HWCAP2_SVEF64MM: u32 = 2048; pub const HWCAP2_SVEBF16: u32 = 4096; pub const HWCAP2_I8MM: u32 = 8192; pub const HWCAP2_BF16: u32 = 16384; pub const HWCAP2_DGH: u32 = 32768; pub const HWCAP2_RNG: u32 = 65536; pub const HWCAP2_BTI: u32 = 131072; pub const HWCAP2_MTE: u32 = 262144; pub const HWCAP2_ECV: u32 = 524288; pub const HWCAP2_AFP: u32 = 1048576; pub const HWCAP2_RPRES: u32 = 2097152; pub const HWCAP2_MTE3: u32 = 4194304; pub const HWCAP2_SME: u32 = 8388608; pub const HWCAP2_SME_I16I64: u32 = 16777216; pub const HWCAP2_SME_F64F64: u32 = 33554432; pub const HWCAP2_SME_I8I32: u32 = 67108864; pub const HWCAP2_SME_F16F32: u32 = 134217728; pub const HWCAP2_SME_B16F32: u32 = 268435456; pub const HWCAP2_SME_F32F32: u32 = 536870912; pub const HWCAP2_SME_FA64: u32 = 1073741824; pub const HWCAP2_WFXT: u32 = 2147483648; pub const HWCAP2_EBF16: u64 = 4294967296; pub const HWCAP2_SVE_EBF16: u64 = 8589934592; pub const HWCAP2_CSSC: u64 = 17179869184; pub const HWCAP2_RPRFM: u64 = 34359738368; pub const HWCAP2_SVE2P1: u64 = 68719476736; pub const HWCAP2_SME2: u64 = 137438953472; pub const HWCAP2_SME2P1: u64 = 274877906944; pub const HWCAP2_SME_I16I32: u64 = 549755813888; pub const HWCAP2_SME_BI32I32: u64 = 1099511627776; pub const HWCAP2_SME_B16B16: u64 = 2199023255552; pub const HWCAP2_SME_F16F16: u64 = 4398046511104; pub const HWCAP2_MOPS: u64 = 8796093022208; pub const HWCAP2_HBC: u64 = 17592186044416; pub const HWCAP2_SVE_B16B16: u64 = 35184372088832; pub const HWCAP2_LRCPC3: u64 = 70368744177664; pub const HWCAP2_LSE128: u64 = 140737488355328; pub const HWCAP2_FPMR: u64 = 281474976710656; pub const HWCAP2_LUT: u64 = 562949953421312; pub const HWCAP2_FAMINMAX: u64 = 1125899906842624; pub const HWCAP2_F8CVT: u64 = 2251799813685248; pub const HWCAP2_F8FMA: u64 = 4503599627370496; pub const HWCAP2_F8DP4: u64 = 9007199254740992; pub const HWCAP2_F8DP2: u64 = 18014398509481984; pub const HWCAP2_F8E4M3: u64 = 36028797018963968; pub const HWCAP2_F8E5M2: u64 = 72057594037927936; pub const HWCAP2_SME_LUTV2: u64 = 144115188075855872; pub const HWCAP2_SME_F8F16: u64 = 288230376151711744; pub const HWCAP2_SME_F8F32: u64 = 576460752303423488; pub const HWCAP2_SME_SF8FMA: u64 = 1152921504606846976; pub const HWCAP2_SME_SF8DP4: u64 = 2305843009213693952; pub const HWCAP2_SME_SF8DP2: u64 = 4611686018427387904; pub const __SVE_VQ_BYTES: u32 = 16; pub const __SVE_VQ_MIN: u32 = 1; pub const __SVE_VQ_MAX: u32 = 512; pub const __SVE_VL_MIN: u32 = 16; pub const __SVE_VL_MAX: u32 = 8192; pub const __SVE_NUM_ZREGS: u32 = 32; pub const __SVE_NUM_PREGS: u32 = 16; pub const __SVE_ZREGS_OFFSET: u32 = 0; pub const PSR_MODE_EL0t: u32 = 0; pub const PSR_MODE_EL1t: u32 = 4; pub const PSR_MODE_EL1h: u32 = 5; pub const PSR_MODE_EL2t: u32 = 8; pub const PSR_MODE_EL2h: u32 = 9; pub const PSR_MODE_EL3t: u32 = 12; pub const PSR_MODE_EL3h: u32 = 13; pub const PSR_MODE_MASK: u32 = 15; pub const PSR_MODE32_BIT: u32 = 16; pub const PSR_F_BIT: u32 = 64; pub const PSR_I_BIT: u32 = 128; pub const PSR_A_BIT: u32 = 256; pub const PSR_D_BIT: u32 = 512; pub const PSR_BTYPE_MASK: u32 = 3072; pub const PSR_SSBS_BIT: u32 = 4096; pub const PSR_PAN_BIT: u32 = 4194304; pub const PSR_UAO_BIT: u32 = 8388608; pub const PSR_DIT_BIT: u32 = 16777216; pub const PSR_TCO_BIT: u32 = 33554432; pub const PSR_V_BIT: u32 = 268435456; pub const PSR_C_BIT: u32 = 536870912; pub const PSR_Z_BIT: u32 = 1073741824; pub const PSR_N_BIT: u32 = 2147483648; pub const PSR_BTYPE_SHIFT: u32 = 10; pub const PSR_f: u32 = 4278190080; pub const PSR_s: u32 = 16711680; pub const PSR_x: u32 = 65280; pub const PSR_c: u32 = 255; pub const PSR_BTYPE_NONE: u32 = 0; pub const PSR_BTYPE_JC: u32 = 1024; pub const PSR_BTYPE_C: u32 = 2048; pub const PSR_BTYPE_J: u32 = 3072; pub const PTRACE_SYSEMU: u32 = 31; pub const PTRACE_SYSEMU_SINGLESTEP: u32 = 32; pub const PTRACE_PEEKMTETAGS: u32 = 33; pub const PTRACE_POKEMTETAGS: u32 = 34; pub const SVE_PT_REGS_MASK: u32 = 1; pub const SVE_PT_REGS_FPSIMD: u32 = 0; pub const SVE_PT_REGS_SVE: u32 = 1; pub const SVE_PT_VL_INHERIT: u32 = 2; pub const SVE_PT_VL_ONEXEC: u32 = 4; pub const ZA_PT_VL_INHERIT: u32 = 2; pub const ZA_PT_VL_ONEXEC: u32 = 4; pub const KVM_COALESCED_MMIO_PAGE_OFFSET: u32 = 1; pub const KVM_DIRTY_LOG_PAGE_OFFSET: u32 = 64; pub const KVM_ARM_TARGET_AEM_V8: u32 = 0; pub const KVM_ARM_TARGET_FOUNDATION_V8: u32 = 1; pub const KVM_ARM_TARGET_CORTEX_A57: u32 = 2; pub const KVM_ARM_TARGET_XGENE_POTENZA: u32 = 3; pub const KVM_ARM_TARGET_CORTEX_A53: u32 = 4; pub const KVM_ARM_TARGET_GENERIC_V8: u32 = 5; pub const KVM_ARM_NUM_TARGETS: u32 = 6; pub const KVM_ARM_DEVICE_TYPE_SHIFT: u32 = 0; pub const KVM_ARM_DEVICE_ID_SHIFT: u32 = 16; pub const KVM_ARM_DEVICE_VGIC_V2: u32 = 0; pub const KVM_VGIC_V2_ADDR_TYPE_DIST: u32 = 0; pub const KVM_VGIC_V2_ADDR_TYPE_CPU: u32 = 1; pub const KVM_VGIC_V2_DIST_SIZE: u32 = 4096; pub const KVM_VGIC_V2_CPU_SIZE: u32 = 8192; pub const KVM_VGIC_V3_ADDR_TYPE_DIST: u32 = 2; pub const KVM_VGIC_V3_ADDR_TYPE_REDIST: u32 = 3; pub const KVM_VGIC_ITS_ADDR_TYPE: u32 = 4; pub const KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION: u32 = 5; pub const KVM_ARM_VCPU_POWER_OFF: u32 = 0; pub const KVM_ARM_VCPU_EL1_32BIT: u32 = 1; pub const KVM_ARM_VCPU_PSCI_0_2: u32 = 2; pub const KVM_ARM_VCPU_PMU_V3: u32 = 3; pub const KVM_ARM_VCPU_SVE: u32 = 4; pub const KVM_ARM_VCPU_PTRAUTH_ADDRESS: u32 = 5; pub const KVM_ARM_VCPU_PTRAUTH_GENERIC: u32 = 6; pub const KVM_ARM_VCPU_HAS_EL2: u32 = 7; pub const KVM_ARM_MAX_DBG_REGS: u32 = 16; pub const KVM_DEBUG_ARCH_HSR_HIGH_VALID: u32 = 1; pub const KVM_GUESTDBG_USE_SW_BP: u32 = 65536; pub const KVM_GUESTDBG_USE_HW: u32 = 131072; pub const KVM_ARM_DEV_EL1_VTIMER: u32 = 1; pub const KVM_ARM_DEV_EL1_PTIMER: u32 = 2; pub const KVM_ARM_DEV_PMU: u32 = 4; pub const KVM_PMU_EVENT_ALLOW: u32 = 0; pub const KVM_PMU_EVENT_DENY: u32 = 1; pub const KVM_ARM_TAGS_TO_GUEST: u32 = 0; pub const KVM_ARM_TAGS_FROM_GUEST: u32 = 1; pub const KVM_REG_ARM_COPROC_MASK: u32 = 268369920; pub const KVM_REG_ARM_COPROC_SHIFT: u32 = 16; pub const KVM_REG_ARM_CORE: u32 = 1048576; pub const KVM_REG_ARM_DEMUX: u32 = 1114112; pub const KVM_REG_ARM_DEMUX_ID_MASK: u32 = 65280; pub const KVM_REG_ARM_DEMUX_ID_SHIFT: u32 = 8; pub const KVM_REG_ARM_DEMUX_ID_CCSIDR: u32 = 0; pub const KVM_REG_ARM_DEMUX_VAL_MASK: u32 = 255; pub const KVM_REG_ARM_DEMUX_VAL_SHIFT: u32 = 0; pub const KVM_REG_ARM64_SYSREG: u32 = 1245184; pub const KVM_REG_ARM64_SYSREG_OP0_MASK: u32 = 49152; pub const KVM_REG_ARM64_SYSREG_OP0_SHIFT: u32 = 14; pub const KVM_REG_ARM64_SYSREG_OP1_MASK: u32 = 14336; pub const KVM_REG_ARM64_SYSREG_OP1_SHIFT: u32 = 11; pub const KVM_REG_ARM64_SYSREG_CRN_MASK: u32 = 1920; pub const KVM_REG_ARM64_SYSREG_CRN_SHIFT: u32 = 7; pub const KVM_REG_ARM64_SYSREG_CRM_MASK: u32 = 120; pub const KVM_REG_ARM64_SYSREG_CRM_SHIFT: u32 = 3; pub const KVM_REG_ARM64_SYSREG_OP2_MASK: u32 = 7; pub const KVM_REG_ARM64_SYSREG_OP2_SHIFT: u32 = 0; pub const KVM_REG_ARM_FW: u32 = 1310720; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_AVAIL: u32 = 0; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_AVAIL: u32 = 1; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_1_NOT_REQUIRED: u32 = 2; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_AVAIL: u32 = 0; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_UNKNOWN: u32 = 1; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_AVAIL: u32 = 2; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_NOT_REQUIRED: u32 = 3; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_2_ENABLED: u32 = 16; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_3_NOT_AVAIL: u32 = 0; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_3_AVAIL: u32 = 1; pub const KVM_REG_ARM_SMCCC_ARCH_WORKAROUND_3_NOT_REQUIRED: u32 = 2; pub const KVM_REG_ARM64_SVE: u32 = 1376256; pub const KVM_REG_ARM64_SVE_ZREG_BASE: u32 = 0; pub const KVM_REG_ARM64_SVE_PREG_BASE: u32 = 1024; pub const KVM_REG_ARM64_SVE_FFR_BASE: u32 = 1536; pub const KVM_ARM64_SVE_NUM_ZREGS: u32 = 32; pub const KVM_ARM64_SVE_NUM_PREGS: u32 = 16; pub const KVM_ARM64_SVE_MAX_SLICES: u32 = 32; pub const KVM_ARM64_SVE_VQ_MIN: u32 = 1; pub const KVM_ARM64_SVE_VQ_MAX: u32 = 512; pub const KVM_ARM64_SVE_VLS_WORDS: u32 = 8; pub const KVM_REG_ARM_FW_FEAT_BMAP: u32 = 1441792; pub const KVM_ARM_VM_SMCCC_CTRL: u32 = 0; pub const KVM_ARM_VM_SMCCC_FILTER: u32 = 0; pub const KVM_DEV_ARM_VGIC_GRP_ADDR: u32 = 0; pub const KVM_DEV_ARM_VGIC_GRP_DIST_REGS: u32 = 1; pub const KVM_DEV_ARM_VGIC_GRP_CPU_REGS: u32 = 2; pub const KVM_DEV_ARM_VGIC_CPUID_SHIFT: u32 = 32; pub const KVM_DEV_ARM_VGIC_CPUID_MASK: u64 = 1095216660480; pub const KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT: u32 = 32; pub const KVM_DEV_ARM_VGIC_V3_MPIDR_MASK: i64 = -4294967296; pub const KVM_DEV_ARM_VGIC_OFFSET_SHIFT: u32 = 0; pub const KVM_DEV_ARM_VGIC_OFFSET_MASK: u32 = 4294967295; pub const KVM_DEV_ARM_VGIC_SYSREG_INSTR_MASK: u32 = 65535; pub const KVM_DEV_ARM_VGIC_GRP_NR_IRQS: u32 = 3; pub const KVM_DEV_ARM_VGIC_GRP_CTRL: u32 = 4; pub const KVM_DEV_ARM_VGIC_GRP_REDIST_REGS: u32 = 5; pub const KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS: u32 = 6; pub const KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO: u32 = 7; pub const KVM_DEV_ARM_VGIC_GRP_ITS_REGS: u32 = 8; pub const KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT: u32 = 10; pub const KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK: u32 = 4294966272; pub const KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK: u32 = 1023; pub const VGIC_LEVEL_INFO_LINE_LEVEL: u32 = 0; pub const KVM_DEV_ARM_VGIC_CTRL_INIT: u32 = 0; pub const KVM_DEV_ARM_ITS_SAVE_TABLES: u32 = 1; pub const KVM_DEV_ARM_ITS_RESTORE_TABLES: u32 = 2; pub const KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES: u32 = 3; pub const KVM_DEV_ARM_ITS_CTRL_RESET: u32 = 4; pub const KVM_ARM_VCPU_PMU_V3_CTRL: u32 = 0; pub const KVM_ARM_VCPU_PMU_V3_IRQ: u32 = 0; pub const KVM_ARM_VCPU_PMU_V3_INIT: u32 = 1; pub const KVM_ARM_VCPU_PMU_V3_FILTER: u32 = 2; pub const KVM_ARM_VCPU_PMU_V3_SET_PMU: u32 = 3; pub const KVM_ARM_VCPU_TIMER_CTRL: u32 = 1; pub const KVM_ARM_VCPU_TIMER_IRQ_VTIMER: u32 = 0; pub const KVM_ARM_VCPU_TIMER_IRQ_PTIMER: u32 = 1; pub const KVM_ARM_VCPU_TIMER_IRQ_HVTIMER: u32 = 2; pub const KVM_ARM_VCPU_TIMER_IRQ_HPTIMER: u32 = 3; pub const KVM_ARM_VCPU_PVTIME_CTRL: u32 = 2; pub const KVM_ARM_VCPU_PVTIME_IPA: u32 = 0; pub const KVM_ARM_IRQ_VCPU2_SHIFT: u32 = 28; pub const KVM_ARM_IRQ_VCPU2_MASK: u32 = 15; pub const KVM_ARM_IRQ_TYPE_SHIFT: u32 = 24; pub const KVM_ARM_IRQ_TYPE_MASK: u32 = 15; pub const KVM_ARM_IRQ_VCPU_SHIFT: u32 = 16; pub const KVM_ARM_IRQ_VCPU_MASK: u32 = 255; pub const KVM_ARM_IRQ_NUM_SHIFT: u32 = 0; pub const KVM_ARM_IRQ_NUM_MASK: u32 = 65535; pub const KVM_ARM_IRQ_TYPE_CPU: u32 = 0; pub const KVM_ARM_IRQ_TYPE_SPI: u32 = 1; pub const KVM_ARM_IRQ_TYPE_PPI: u32 = 2; pub const KVM_ARM_IRQ_CPU_IRQ: u32 = 0; pub const KVM_ARM_IRQ_CPU_FIQ: u32 = 1; pub const KVM_ARM_IRQ_GIC_MAX: u32 = 127; pub const KVM_NR_IRQCHIPS: u32 = 1; pub const KVM_PSCI_FN_BASE: u32 = 2512501342; pub const KVM_PSCI_RET_SUCCESS: u32 = 0; pub const KVM_PSCI_RET_NI: i32 = -1; pub const KVM_PSCI_RET_INVAL: i32 = -2; pub const KVM_PSCI_RET_DENIED: i32 = -3; pub const KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2: u32 = 1; pub const KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED: u32 = 1; pub const KVM_HYPERCALL_EXIT_SMC: u32 = 1; pub const KVM_HYPERCALL_EXIT_16BIT: u32 = 2; pub const KVM_ARM_FEATURE_ID_RANGE: u32 = 0; pub const KVM_ARM_FEATURE_ID_RANGE_SIZE: u32 = 192; pub const KVM_API_VERSION: u32 = 12; pub const KVM_MEM_LOG_DIRTY_PAGES: u32 = 1; pub const KVM_MEM_READONLY: u32 = 2; pub const KVM_MEM_GUEST_MEMFD: u32 = 4; pub const KVM_PIT_SPEAKER_DUMMY: u32 = 1; pub const KVM_EXIT_HYPERV_SYNIC: u32 = 1; pub const KVM_EXIT_HYPERV_HCALL: u32 = 2; pub const KVM_EXIT_HYPERV_SYNDBG: u32 = 3; pub const KVM_EXIT_XEN_HCALL: u32 = 1; pub const KVM_S390_GET_SKEYS_NONE: u32 = 1; pub const KVM_S390_SKEYS_MAX: u32 = 1048576; pub const KVM_EXIT_UNKNOWN: u32 = 0; pub const KVM_EXIT_EXCEPTION: u32 = 1; pub const KVM_EXIT_IO: u32 = 2; pub const KVM_EXIT_HYPERCALL: u32 = 3; pub const KVM_EXIT_DEBUG: u32 = 4; pub const KVM_EXIT_HLT: u32 = 5; pub const KVM_EXIT_MMIO: u32 = 6; pub const KVM_EXIT_IRQ_WINDOW_OPEN: u32 = 7; pub const KVM_EXIT_SHUTDOWN: u32 = 8; pub const KVM_EXIT_FAIL_ENTRY: u32 = 9; pub const KVM_EXIT_INTR: u32 = 10; pub const KVM_EXIT_SET_TPR: u32 = 11; pub const KVM_EXIT_TPR_ACCESS: u32 = 12; pub const KVM_EXIT_S390_SIEIC: u32 = 13; pub const KVM_EXIT_S390_RESET: u32 = 14; pub const KVM_EXIT_DCR: u32 = 15; pub const KVM_EXIT_NMI: u32 = 16; pub const KVM_EXIT_INTERNAL_ERROR: u32 = 17; pub const KVM_EXIT_OSI: u32 = 18; pub const KVM_EXIT_PAPR_HCALL: u32 = 19; pub const KVM_EXIT_S390_UCONTROL: u32 = 20; pub const KVM_EXIT_WATCHDOG: u32 = 21; pub const KVM_EXIT_S390_TSCH: u32 = 22; pub const KVM_EXIT_EPR: u32 = 23; pub const KVM_EXIT_SYSTEM_EVENT: u32 = 24; pub const KVM_EXIT_S390_STSI: u32 = 25; pub const KVM_EXIT_IOAPIC_EOI: u32 = 26; pub const KVM_EXIT_HYPERV: u32 = 27; pub const KVM_EXIT_ARM_NISV: u32 = 28; pub const KVM_EXIT_X86_RDMSR: u32 = 29; pub const KVM_EXIT_X86_WRMSR: u32 = 30; pub const KVM_EXIT_DIRTY_RING_FULL: u32 = 31; pub const KVM_EXIT_AP_RESET_HOLD: u32 = 32; pub const KVM_EXIT_X86_BUS_LOCK: u32 = 33; pub const KVM_EXIT_XEN: u32 = 34; pub const KVM_EXIT_RISCV_SBI: u32 = 35; pub const KVM_EXIT_RISCV_CSR: u32 = 36; pub const KVM_EXIT_NOTIFY: u32 = 37; pub const KVM_EXIT_LOONGARCH_IOCSR: u32 = 38; pub const KVM_EXIT_MEMORY_FAULT: u32 = 39; pub const KVM_INTERNAL_ERROR_EMULATION: u32 = 1; pub const KVM_INTERNAL_ERROR_SIMUL_EX: u32 = 2; pub const KVM_INTERNAL_ERROR_DELIVERY_EV: u32 = 3; pub const KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON: u32 = 4; pub const KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES: u32 = 1; pub const KVM_EXIT_IO_IN: u32 = 0; pub const KVM_EXIT_IO_OUT: u32 = 1; pub const KVM_SYSTEM_EVENT_SHUTDOWN: u32 = 1; pub const KVM_SYSTEM_EVENT_RESET: u32 = 2; pub const KVM_SYSTEM_EVENT_CRASH: u32 = 3; pub const KVM_SYSTEM_EVENT_WAKEUP: u32 = 4; pub const KVM_SYSTEM_EVENT_SUSPEND: u32 = 5; pub const KVM_SYSTEM_EVENT_SEV_TERM: u32 = 6; pub const KVM_MSR_EXIT_REASON_INVAL: u32 = 1; pub const KVM_MSR_EXIT_REASON_UNKNOWN: u32 = 2; pub const KVM_MSR_EXIT_REASON_FILTER: u32 = 4; pub const KVM_MSR_EXIT_REASON_VALID_MASK: u32 = 7; pub const KVM_NOTIFY_CONTEXT_INVALID: u32 = 1; pub const KVM_MEMORY_EXIT_FLAG_PRIVATE: u32 = 8; pub const SYNC_REGS_SIZE_BYTES: u32 = 2048; pub const KVM_MP_STATE_RUNNABLE: u32 = 0; pub const KVM_MP_STATE_UNINITIALIZED: u32 = 1; pub const KVM_MP_STATE_INIT_RECEIVED: u32 = 2; pub const KVM_MP_STATE_HALTED: u32 = 3; pub const KVM_MP_STATE_SIPI_RECEIVED: u32 = 4; pub const KVM_MP_STATE_STOPPED: u32 = 5; pub const KVM_MP_STATE_CHECK_STOP: u32 = 6; pub const KVM_MP_STATE_OPERATING: u32 = 7; pub const KVM_MP_STATE_LOAD: u32 = 8; pub const KVM_MP_STATE_AP_RESET_HOLD: u32 = 9; pub const KVM_MP_STATE_SUSPENDED: u32 = 10; pub const KVM_GUESTDBG_ENABLE: u32 = 1; pub const KVM_GUESTDBG_SINGLESTEP: u32 = 2; pub const KVM_X86_DISABLE_EXITS_MWAIT: u32 = 1; pub const KVM_X86_DISABLE_EXITS_HLT: u32 = 2; pub const KVM_X86_DISABLE_EXITS_PAUSE: u32 = 4; pub const KVM_X86_DISABLE_EXITS_CSTATE: u32 = 8; pub const KVM_X86_DISABLE_VALID_EXITS: u32 = 15; pub const KVMIO: u32 = 174; pub const KVM_VM_S390_UCONTROL: u32 = 1; pub const KVM_VM_PPC_HV: u32 = 1; pub const KVM_VM_PPC_PR: u32 = 2; pub const KVM_VM_MIPS_AUTO: u32 = 0; pub const KVM_VM_MIPS_VZ: u32 = 1; pub const KVM_VM_MIPS_TE: u32 = 2; pub const KVM_S390_SIE_PAGE_OFFSET: u32 = 1; pub const KVM_VM_TYPE_ARM_IPA_SIZE_MASK: u32 = 255; pub const KVM_CAP_IRQCHIP: u32 = 0; pub const KVM_CAP_HLT: u32 = 1; pub const KVM_CAP_MMU_SHADOW_CACHE_CONTROL: u32 = 2; pub const KVM_CAP_USER_MEMORY: u32 = 3; pub const KVM_CAP_SET_TSS_ADDR: u32 = 4; pub const KVM_CAP_VAPIC: u32 = 6; pub const KVM_CAP_EXT_CPUID: u32 = 7; pub const KVM_CAP_CLOCKSOURCE: u32 = 8; pub const KVM_CAP_NR_VCPUS: u32 = 9; pub const KVM_CAP_NR_MEMSLOTS: u32 = 10; pub const KVM_CAP_PIT: u32 = 11; pub const KVM_CAP_NOP_IO_DELAY: u32 = 12; pub const KVM_CAP_PV_MMU: u32 = 13; pub const KVM_CAP_MP_STATE: u32 = 14; pub const KVM_CAP_COALESCED_MMIO: u32 = 15; pub const KVM_CAP_SYNC_MMU: u32 = 16; pub const KVM_CAP_IOMMU: u32 = 18; pub const KVM_CAP_DESTROY_MEMORY_REGION_WORKS: u32 = 21; pub const KVM_CAP_USER_NMI: u32 = 22; pub const KVM_CAP_SET_GUEST_DEBUG: u32 = 23; pub const KVM_CAP_IRQ_ROUTING: u32 = 25; pub const KVM_CAP_IRQ_INJECT_STATUS: u32 = 26; pub const KVM_CAP_ASSIGN_DEV_IRQ: u32 = 29; pub const KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: u32 = 30; pub const KVM_CAP_IRQFD: u32 = 32; pub const KVM_CAP_SET_BOOT_CPU_ID: u32 = 34; pub const KVM_CAP_IOEVENTFD: u32 = 36; pub const KVM_CAP_SET_IDENTITY_MAP_ADDR: u32 = 37; pub const KVM_CAP_ADJUST_CLOCK: u32 = 39; pub const KVM_CAP_INTERNAL_ERROR_DATA: u32 = 40; pub const KVM_CAP_VCPU_EVENTS: u32 = 41; pub const KVM_CAP_S390_PSW: u32 = 42; pub const KVM_CAP_PPC_SEGSTATE: u32 = 43; pub const KVM_CAP_HYPERV: u32 = 44; pub const KVM_CAP_HYPERV_VAPIC: u32 = 45; pub const KVM_CAP_HYPERV_SPIN: u32 = 46; pub const KVM_CAP_PCI_SEGMENT: u32 = 47; pub const KVM_CAP_PPC_PAIRED_SINGLES: u32 = 48; pub const KVM_CAP_INTR_SHADOW: u32 = 49; pub const KVM_CAP_X86_ROBUST_SINGLESTEP: u32 = 51; pub const KVM_CAP_PPC_OSI: u32 = 52; pub const KVM_CAP_PPC_UNSET_IRQ: u32 = 53; pub const KVM_CAP_ENABLE_CAP: u32 = 54; pub const KVM_CAP_PPC_GET_PVINFO: u32 = 57; pub const KVM_CAP_PPC_IRQ_LEVEL: u32 = 58; pub const KVM_CAP_ASYNC_PF: u32 = 59; pub const KVM_CAP_TSC_CONTROL: u32 = 60; pub const KVM_CAP_GET_TSC_KHZ: u32 = 61; pub const KVM_CAP_PPC_BOOKE_SREGS: u32 = 62; pub const KVM_CAP_SPAPR_TCE: u32 = 63; pub const KVM_CAP_PPC_SMT: u32 = 64; pub const KVM_CAP_PPC_RMA: u32 = 65; pub const KVM_CAP_MAX_VCPUS: u32 = 66; pub const KVM_CAP_PPC_HIOR: u32 = 67; pub const KVM_CAP_PPC_PAPR: u32 = 68; pub const KVM_CAP_SW_TLB: u32 = 69; pub const KVM_CAP_ONE_REG: u32 = 70; pub const KVM_CAP_S390_GMAP: u32 = 71; pub const KVM_CAP_TSC_DEADLINE_TIMER: u32 = 72; pub const KVM_CAP_S390_UCONTROL: u32 = 73; pub const KVM_CAP_SYNC_REGS: u32 = 74; pub const KVM_CAP_PCI_2_3: u32 = 75; pub const KVM_CAP_KVMCLOCK_CTRL: u32 = 76; pub const KVM_CAP_SIGNAL_MSI: u32 = 77; pub const KVM_CAP_PPC_GET_SMMU_INFO: u32 = 78; pub const KVM_CAP_S390_COW: u32 = 79; pub const KVM_CAP_PPC_ALLOC_HTAB: u32 = 80; pub const KVM_CAP_READONLY_MEM: u32 = 81; pub const KVM_CAP_IRQFD_RESAMPLE: u32 = 82; pub const KVM_CAP_PPC_BOOKE_WATCHDOG: u32 = 83; pub const KVM_CAP_PPC_HTAB_FD: u32 = 84; pub const KVM_CAP_S390_CSS_SUPPORT: u32 = 85; pub const KVM_CAP_PPC_EPR: u32 = 86; pub const KVM_CAP_ARM_PSCI: u32 = 87; pub const KVM_CAP_ARM_SET_DEVICE_ADDR: u32 = 88; pub const KVM_CAP_DEVICE_CTRL: u32 = 89; pub const KVM_CAP_IRQ_MPIC: u32 = 90; pub const KVM_CAP_PPC_RTAS: u32 = 91; pub const KVM_CAP_IRQ_XICS: u32 = 92; pub const KVM_CAP_ARM_EL1_32BIT: u32 = 93; pub const KVM_CAP_SPAPR_MULTITCE: u32 = 94; pub const KVM_CAP_EXT_EMUL_CPUID: u32 = 95; pub const KVM_CAP_HYPERV_TIME: u32 = 96; pub const KVM_CAP_IOAPIC_POLARITY_IGNORED: u32 = 97; pub const KVM_CAP_ENABLE_CAP_VM: u32 = 98; pub const KVM_CAP_S390_IRQCHIP: u32 = 99; pub const KVM_CAP_IOEVENTFD_NO_LENGTH: u32 = 100; pub const KVM_CAP_VM_ATTRIBUTES: u32 = 101; pub const KVM_CAP_ARM_PSCI_0_2: u32 = 102; pub const KVM_CAP_PPC_FIXUP_HCALL: u32 = 103; pub const KVM_CAP_PPC_ENABLE_HCALL: u32 = 104; pub const KVM_CAP_CHECK_EXTENSION_VM: u32 = 105; pub const KVM_CAP_S390_USER_SIGP: u32 = 106; pub const KVM_CAP_S390_VECTOR_REGISTERS: u32 = 107; pub const KVM_CAP_S390_MEM_OP: u32 = 108; pub const KVM_CAP_S390_USER_STSI: u32 = 109; pub const KVM_CAP_S390_SKEYS: u32 = 110; pub const KVM_CAP_MIPS_FPU: u32 = 111; pub const KVM_CAP_MIPS_MSA: u32 = 112; pub const KVM_CAP_S390_INJECT_IRQ: u32 = 113; pub const KVM_CAP_S390_IRQ_STATE: u32 = 114; pub const KVM_CAP_PPC_HWRNG: u32 = 115; pub const KVM_CAP_DISABLE_QUIRKS: u32 = 116; pub const KVM_CAP_X86_SMM: u32 = 117; pub const KVM_CAP_MULTI_ADDRESS_SPACE: u32 = 118; pub const KVM_CAP_GUEST_DEBUG_HW_BPS: u32 = 119; pub const KVM_CAP_GUEST_DEBUG_HW_WPS: u32 = 120; pub const KVM_CAP_SPLIT_IRQCHIP: u32 = 121; pub const KVM_CAP_IOEVENTFD_ANY_LENGTH: u32 = 122; pub const KVM_CAP_HYPERV_SYNIC: u32 = 123; pub const KVM_CAP_S390_RI: u32 = 124; pub const KVM_CAP_SPAPR_TCE_64: u32 = 125; pub const KVM_CAP_ARM_PMU_V3: u32 = 126; pub const KVM_CAP_VCPU_ATTRIBUTES: u32 = 127; pub const KVM_CAP_MAX_VCPU_ID: u32 = 128; pub const KVM_CAP_X2APIC_API: u32 = 129; pub const KVM_CAP_S390_USER_INSTR0: u32 = 130; pub const KVM_CAP_MSI_DEVID: u32 = 131; pub const KVM_CAP_PPC_HTM: u32 = 132; pub const KVM_CAP_SPAPR_RESIZE_HPT: u32 = 133; pub const KVM_CAP_PPC_MMU_RADIX: u32 = 134; pub const KVM_CAP_PPC_MMU_HASH_V3: u32 = 135; pub const KVM_CAP_IMMEDIATE_EXIT: u32 = 136; pub const KVM_CAP_MIPS_VZ: u32 = 137; pub const KVM_CAP_MIPS_TE: u32 = 138; pub const KVM_CAP_MIPS_64BIT: u32 = 139; pub const KVM_CAP_S390_GS: u32 = 140; pub const KVM_CAP_S390_AIS: u32 = 141; pub const KVM_CAP_SPAPR_TCE_VFIO: u32 = 142; pub const KVM_CAP_X86_DISABLE_EXITS: u32 = 143; pub const KVM_CAP_ARM_USER_IRQ: u32 = 144; pub const KVM_CAP_S390_CMMA_MIGRATION: u32 = 145; pub const KVM_CAP_PPC_FWNMI: u32 = 146; pub const KVM_CAP_PPC_SMT_POSSIBLE: u32 = 147; pub const KVM_CAP_HYPERV_SYNIC2: u32 = 148; pub const KVM_CAP_HYPERV_VP_INDEX: u32 = 149; pub const KVM_CAP_S390_AIS_MIGRATION: u32 = 150; pub const KVM_CAP_PPC_GET_CPU_CHAR: u32 = 151; pub const KVM_CAP_S390_BPB: u32 = 152; pub const KVM_CAP_GET_MSR_FEATURES: u32 = 153; pub const KVM_CAP_HYPERV_EVENTFD: u32 = 154; pub const KVM_CAP_HYPERV_TLBFLUSH: u32 = 155; pub const KVM_CAP_S390_HPAGE_1M: u32 = 156; pub const KVM_CAP_NESTED_STATE: u32 = 157; pub const KVM_CAP_ARM_INJECT_SERROR_ESR: u32 = 158; pub const KVM_CAP_MSR_PLATFORM_INFO: u32 = 159; pub const KVM_CAP_PPC_NESTED_HV: u32 = 160; pub const KVM_CAP_HYPERV_SEND_IPI: u32 = 161; pub const KVM_CAP_COALESCED_PIO: u32 = 162; pub const KVM_CAP_HYPERV_ENLIGHTENED_VMCS: u32 = 163; pub const KVM_CAP_EXCEPTION_PAYLOAD: u32 = 164; pub const KVM_CAP_ARM_VM_IPA_SIZE: u32 = 165; pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: u32 = 166; pub const KVM_CAP_HYPERV_CPUID: u32 = 167; pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2: u32 = 168; pub const KVM_CAP_PPC_IRQ_XIVE: u32 = 169; pub const KVM_CAP_ARM_SVE: u32 = 170; pub const KVM_CAP_ARM_PTRAUTH_ADDRESS: u32 = 171; pub const KVM_CAP_ARM_PTRAUTH_GENERIC: u32 = 172; pub const KVM_CAP_PMU_EVENT_FILTER: u32 = 173; pub const KVM_CAP_ARM_IRQ_LINE_LAYOUT_2: u32 = 174; pub const KVM_CAP_HYPERV_DIRECT_TLBFLUSH: u32 = 175; pub const KVM_CAP_PPC_GUEST_DEBUG_SSTEP: u32 = 176; pub const KVM_CAP_ARM_NISV_TO_USER: u32 = 177; pub const KVM_CAP_ARM_INJECT_EXT_DABT: u32 = 178; pub const KVM_CAP_S390_VCPU_RESETS: u32 = 179; pub const KVM_CAP_S390_PROTECTED: u32 = 180; pub const KVM_CAP_PPC_SECURE_GUEST: u32 = 181; pub const KVM_CAP_HALT_POLL: u32 = 182; pub const KVM_CAP_ASYNC_PF_INT: u32 = 183; pub const KVM_CAP_LAST_CPU: u32 = 184; pub const KVM_CAP_SMALLER_MAXPHYADDR: u32 = 185; pub const KVM_CAP_S390_DIAG318: u32 = 186; pub const KVM_CAP_STEAL_TIME: u32 = 187; pub const KVM_CAP_X86_USER_SPACE_MSR: u32 = 188; pub const KVM_CAP_X86_MSR_FILTER: u32 = 189; pub const KVM_CAP_ENFORCE_PV_FEATURE_CPUID: u32 = 190; pub const KVM_CAP_SYS_HYPERV_CPUID: u32 = 191; pub const KVM_CAP_DIRTY_LOG_RING: u32 = 192; pub const KVM_CAP_X86_BUS_LOCK_EXIT: u32 = 193; pub const KVM_CAP_PPC_DAWR1: u32 = 194; pub const KVM_CAP_SET_GUEST_DEBUG2: u32 = 195; pub const KVM_CAP_SGX_ATTRIBUTE: u32 = 196; pub const KVM_CAP_VM_COPY_ENC_CONTEXT_FROM: u32 = 197; pub const KVM_CAP_PTP_KVM: u32 = 198; pub const KVM_CAP_HYPERV_ENFORCE_CPUID: u32 = 199; pub const KVM_CAP_SREGS2: u32 = 200; pub const KVM_CAP_EXIT_HYPERCALL: u32 = 201; pub const KVM_CAP_PPC_RPT_INVALIDATE: u32 = 202; pub const KVM_CAP_BINARY_STATS_FD: u32 = 203; pub const KVM_CAP_EXIT_ON_EMULATION_FAILURE: u32 = 204; pub const KVM_CAP_ARM_MTE: u32 = 205; pub const KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM: u32 = 206; pub const KVM_CAP_VM_GPA_BITS: u32 = 207; pub const KVM_CAP_XSAVE2: u32 = 208; pub const KVM_CAP_SYS_ATTRIBUTES: u32 = 209; pub const KVM_CAP_PPC_AIL_MODE_3: u32 = 210; pub const KVM_CAP_S390_MEM_OP_EXTENSION: u32 = 211; pub const KVM_CAP_PMU_CAPABILITY: u32 = 212; pub const KVM_CAP_DISABLE_QUIRKS2: u32 = 213; pub const KVM_CAP_VM_TSC_CONTROL: u32 = 214; pub const KVM_CAP_SYSTEM_EVENT_DATA: u32 = 215; pub const KVM_CAP_ARM_SYSTEM_SUSPEND: u32 = 216; pub const KVM_CAP_S390_PROTECTED_DUMP: u32 = 217; pub const KVM_CAP_X86_TRIPLE_FAULT_EVENT: u32 = 218; pub const KVM_CAP_X86_NOTIFY_VMEXIT: u32 = 219; pub const KVM_CAP_VM_DISABLE_NX_HUGE_PAGES: u32 = 220; pub const KVM_CAP_S390_ZPCI_OP: u32 = 221; pub const KVM_CAP_S390_CPU_TOPOLOGY: u32 = 222; pub const KVM_CAP_DIRTY_LOG_RING_ACQ_REL: u32 = 223; pub const KVM_CAP_S390_PROTECTED_ASYNC_DISABLE: u32 = 224; pub const KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP: u32 = 225; pub const KVM_CAP_PMU_EVENT_MASKED_EVENTS: u32 = 226; pub const KVM_CAP_COUNTER_OFFSET: u32 = 227; pub const KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE: u32 = 228; pub const KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES: u32 = 229; pub const KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES: u32 = 230; pub const KVM_CAP_USER_MEMORY2: u32 = 231; pub const KVM_CAP_MEMORY_FAULT_INFO: u32 = 232; pub const KVM_CAP_MEMORY_ATTRIBUTES: u32 = 233; pub const KVM_CAP_GUEST_MEMFD: u32 = 234; pub const KVM_CAP_VM_TYPES: u32 = 235; pub const KVM_IRQ_ROUTING_IRQCHIP: u32 = 1; pub const KVM_IRQ_ROUTING_MSI: u32 = 2; pub const KVM_IRQ_ROUTING_S390_ADAPTER: u32 = 3; pub const KVM_IRQ_ROUTING_HV_SINT: u32 = 4; pub const KVM_IRQ_ROUTING_XEN_EVTCHN: u32 = 5; pub const KVM_IRQFD_FLAG_DEASSIGN: u32 = 1; pub const KVM_IRQFD_FLAG_RESAMPLE: u32 = 2; pub const KVM_CLOCK_TSC_STABLE: u32 = 2; pub const KVM_CLOCK_REALTIME: u32 = 4; pub const KVM_CLOCK_HOST_TSC: u32 = 8; pub const KVM_MMU_FSL_BOOKE_NOHV: u32 = 0; pub const KVM_MMU_FSL_BOOKE_HV: u32 = 1; pub const KVM_REG_ARCH_MASK: i64 = -72057594037927936; pub const KVM_REG_GENERIC: u32 = 0; pub const KVM_REG_PPC: u64 = 1152921504606846976; pub const KVM_REG_X86: u64 = 2305843009213693952; pub const KVM_REG_IA64: u64 = 3458764513820540928; pub const KVM_REG_ARM: u64 = 4611686018427387904; pub const KVM_REG_S390: u64 = 5764607523034234880; pub const KVM_REG_ARM64: u64 = 6917529027641081856; pub const KVM_REG_MIPS: u64 = 8070450532247928832; pub const KVM_REG_RISCV: i64 = -9223372036854775808; pub const KVM_REG_LOONGARCH: i64 = -8070450532247928832; pub const KVM_REG_SIZE_SHIFT: u32 = 52; pub const KVM_REG_SIZE_MASK: u64 = 67553994410557440; pub const KVM_REG_SIZE_U8: u32 = 0; pub const KVM_REG_SIZE_U16: u64 = 4503599627370496; pub const KVM_REG_SIZE_U32: u64 = 9007199254740992; pub const KVM_REG_SIZE_U64: u64 = 13510798882111488; pub const KVM_REG_SIZE_U128: u64 = 18014398509481984; pub const KVM_REG_SIZE_U256: u64 = 22517998136852480; pub const KVM_REG_SIZE_U512: u64 = 27021597764222976; pub const KVM_REG_SIZE_U1024: u64 = 31525197391593472; pub const KVM_REG_SIZE_U2048: u64 = 36028797018963968; pub const KVM_MSI_VALID_DEVID: u32 = 1; pub const KVM_CREATE_DEVICE_TEST: u32 = 1; pub const KVM_DEV_VFIO_FILE: u32 = 1; pub const KVM_DEV_VFIO_FILE_ADD: u32 = 1; pub const KVM_DEV_VFIO_FILE_DEL: u32 = 2; pub const KVM_DEV_VFIO_GROUP: u32 = 1; pub const KVM_DEV_VFIO_GROUP_ADD: u32 = 1; pub const KVM_DEV_VFIO_GROUP_DEL: u32 = 2; pub const KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: u32 = 3; pub const KVM_S390_STORE_STATUS_NOADDR: i32 = -1; pub const KVM_S390_STORE_STATUS_PREFIXED: i32 = -2; pub const KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE: u32 = 1; pub const KVM_DIRTY_LOG_INITIALLY_SET: u32 = 2; pub const KVM_DIRTY_GFN_F_MASK: u32 = 3; pub const KVM_BUS_LOCK_DETECTION_OFF: u32 = 1; pub const KVM_BUS_LOCK_DETECTION_EXIT: u32 = 2; pub const KVM_PMU_CAP_DISABLE: u32 = 1; pub const KVM_STATS_TYPE_SHIFT: u32 = 0; pub const KVM_STATS_TYPE_MASK: u32 = 15; pub const KVM_STATS_TYPE_CUMULATIVE: u32 = 0; pub const KVM_STATS_TYPE_INSTANT: u32 = 1; pub const KVM_STATS_TYPE_PEAK: u32 = 2; pub const KVM_STATS_TYPE_LINEAR_HIST: u32 = 3; pub const KVM_STATS_TYPE_LOG_HIST: u32 = 4; pub const KVM_STATS_TYPE_MAX: u32 = 4; pub const KVM_STATS_UNIT_SHIFT: u32 = 4; pub const KVM_STATS_UNIT_MASK: u32 = 240; pub const KVM_STATS_UNIT_NONE: u32 = 0; pub const KVM_STATS_UNIT_BYTES: u32 = 16; pub const KVM_STATS_UNIT_SECONDS: u32 = 32; pub const KVM_STATS_UNIT_CYCLES: u32 = 48; pub const KVM_STATS_UNIT_BOOLEAN: u32 = 64; pub const KVM_STATS_UNIT_MAX: u32 = 64; pub const KVM_STATS_BASE_SHIFT: u32 = 8; pub const KVM_STATS_BASE_MASK: u32 = 3840; pub const KVM_STATS_BASE_POW10: u32 = 0; pub const KVM_STATS_BASE_POW2: u32 = 256; pub const KVM_STATS_BASE_MAX: u32 = 256; pub const KVM_X86_NOTIFY_VMEXIT_ENABLED: u32 = 1; pub const KVM_X86_NOTIFY_VMEXIT_USER: u32 = 2; pub const KVM_MEMORY_ATTRIBUTE_PRIVATE: u32 = 8; pub type __s8 = ::std::os::raw::c_schar; pub type __u8 = ::std::os::raw::c_uchar; pub type __s16 = ::std::os::raw::c_short; pub type __u16 = ::std::os::raw::c_ushort; pub type __s32 = ::std::os::raw::c_int; pub type __u32 = ::std::os::raw::c_uint; pub type __s64 = ::std::os::raw::c_longlong; pub type __u64 = ::std::os::raw::c_ulonglong; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __kernel_fd_set { pub fds_bits: [::std::os::raw::c_ulong; 16usize], } #[test] fn bindgen_test_layout___kernel_fd_set() { const UNINIT: ::std::mem::MaybeUninit<__kernel_fd_set> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__kernel_fd_set>(), 128usize, concat!("Size of: ", stringify!(__kernel_fd_set)) ); assert_eq!( ::std::mem::align_of::<__kernel_fd_set>(), 8usize, concat!("Alignment of ", stringify!(__kernel_fd_set)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fds_bits) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__kernel_fd_set), "::", stringify!(fds_bits) ) ); } pub type __kernel_sighandler_t = ::std::option::Option; pub type __kernel_key_t = ::std::os::raw::c_int; pub type __kernel_mqd_t = ::std::os::raw::c_int; pub type __kernel_old_uid_t = ::std::os::raw::c_ushort; pub type __kernel_old_gid_t = ::std::os::raw::c_ushort; pub type __kernel_long_t = ::std::os::raw::c_long; pub type __kernel_ulong_t = ::std::os::raw::c_ulong; pub type __kernel_ino_t = __kernel_ulong_t; pub type __kernel_mode_t = ::std::os::raw::c_uint; pub type __kernel_pid_t = ::std::os::raw::c_int; pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; pub type __kernel_uid_t = ::std::os::raw::c_uint; pub type __kernel_gid_t = ::std::os::raw::c_uint; pub type __kernel_suseconds_t = __kernel_long_t; pub type __kernel_daddr_t = ::std::os::raw::c_int; pub type __kernel_uid32_t = ::std::os::raw::c_uint; pub type __kernel_gid32_t = ::std::os::raw::c_uint; pub type __kernel_old_dev_t = ::std::os::raw::c_uint; pub type __kernel_size_t = __kernel_ulong_t; pub type __kernel_ssize_t = __kernel_long_t; pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __kernel_fsid_t { pub val: [::std::os::raw::c_int; 2usize], } #[test] fn bindgen_test_layout___kernel_fsid_t() { const UNINIT: ::std::mem::MaybeUninit<__kernel_fsid_t> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__kernel_fsid_t>(), 8usize, concat!("Size of: ", stringify!(__kernel_fsid_t)) ); assert_eq!( ::std::mem::align_of::<__kernel_fsid_t>(), 4usize, concat!("Alignment of ", stringify!(__kernel_fsid_t)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).val) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__kernel_fsid_t), "::", stringify!(val) ) ); } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; pub type __kernel_timer_t = ::std::os::raw::c_int; pub type __kernel_clockid_t = ::std::os::raw::c_int; pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; pub type __kernel_uid16_t = ::std::os::raw::c_ushort; pub type __kernel_gid16_t = ::std::os::raw::c_ushort; pub type __s128 = i128; pub type __u128 = u128; pub type __le16 = __u16; pub type __be16 = __u16; pub type __le32 = __u32; pub type __be32 = __u32; pub type __le64 = __u64; pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct user_pt_regs { pub regs: [__u64; 31usize], pub sp: __u64, pub pc: __u64, pub pstate: __u64, } #[test] fn bindgen_test_layout_user_pt_regs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 272usize, concat!("Size of: ", stringify!(user_pt_regs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(user_pt_regs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_pt_regs), "::", stringify!(regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sp) as usize - ptr as usize }, 248usize, concat!( "Offset of field: ", stringify!(user_pt_regs), "::", stringify!(sp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pc) as usize - ptr as usize }, 256usize, concat!( "Offset of field: ", stringify!(user_pt_regs), "::", stringify!(pc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pstate) as usize - ptr as usize }, 264usize, concat!( "Offset of field: ", stringify!(user_pt_regs), "::", stringify!(pstate) ) ); } #[repr(C)] #[repr(align(16))] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct user_fpsimd_state { pub vregs: [__uint128_t; 32usize], pub fpsr: __u32, pub fpcr: __u32, pub __reserved: [__u32; 2usize], } #[test] fn bindgen_test_layout_user_fpsimd_state() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 528usize, concat!("Size of: ", stringify!(user_fpsimd_state)) ); assert_eq!( ::std::mem::align_of::(), 16usize, concat!("Alignment of ", stringify!(user_fpsimd_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vregs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_fpsimd_state), "::", stringify!(vregs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fpsr) as usize - ptr as usize }, 512usize, concat!( "Offset of field: ", stringify!(user_fpsimd_state), "::", stringify!(fpsr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fpcr) as usize - ptr as usize }, 516usize, concat!( "Offset of field: ", stringify!(user_fpsimd_state), "::", stringify!(fpcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).__reserved) as usize - ptr as usize }, 520usize, concat!( "Offset of field: ", stringify!(user_fpsimd_state), "::", stringify!(__reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct user_hwdebug_state { pub dbg_info: __u32, pub pad: __u32, pub dbg_regs: [user_hwdebug_state__bindgen_ty_1; 16usize], } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct user_hwdebug_state__bindgen_ty_1 { pub addr: __u64, pub ctrl: __u32, pub pad: __u32, } #[test] fn bindgen_test_layout_user_hwdebug_state__bindgen_ty_1() { 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!(user_hwdebug_state__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(user_hwdebug_state__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_hwdebug_state__bindgen_ty_1), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ctrl) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(user_hwdebug_state__bindgen_ty_1), "::", stringify!(ctrl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(user_hwdebug_state__bindgen_ty_1), "::", stringify!(pad) ) ); } #[test] fn bindgen_test_layout_user_hwdebug_state() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 264usize, concat!("Size of: ", stringify!(user_hwdebug_state)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(user_hwdebug_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dbg_info) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_hwdebug_state), "::", stringify!(dbg_info) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(user_hwdebug_state), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dbg_regs) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(user_hwdebug_state), "::", stringify!(dbg_regs) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct user_sve_header { pub size: __u32, pub max_size: __u32, pub vl: __u16, pub max_vl: __u16, pub flags: __u16, pub __reserved: __u16, } #[test] fn bindgen_test_layout_user_sve_header() { 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!(user_sve_header)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(user_sve_header)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_sve_header), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).max_size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(user_sve_header), "::", stringify!(max_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vl) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(user_sve_header), "::", stringify!(vl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).max_vl) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(user_sve_header), "::", stringify!(max_vl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(user_sve_header), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).__reserved) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(user_sve_header), "::", stringify!(__reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct user_pac_mask { pub data_mask: __u64, pub insn_mask: __u64, } #[test] fn bindgen_test_layout_user_pac_mask() { 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!(user_pac_mask)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(user_pac_mask)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data_mask) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_pac_mask), "::", stringify!(data_mask) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).insn_mask) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(user_pac_mask), "::", stringify!(insn_mask) ) ); } #[repr(C)] #[repr(align(16))] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct user_pac_address_keys { pub apiakey: __uint128_t, pub apibkey: __uint128_t, pub apdakey: __uint128_t, pub apdbkey: __uint128_t, } #[test] fn bindgen_test_layout_user_pac_address_keys() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(user_pac_address_keys)) ); assert_eq!( ::std::mem::align_of::(), 16usize, concat!("Alignment of ", stringify!(user_pac_address_keys)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apiakey) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_pac_address_keys), "::", stringify!(apiakey) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apibkey) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(user_pac_address_keys), "::", stringify!(apibkey) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apdakey) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(user_pac_address_keys), "::", stringify!(apdakey) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apdbkey) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(user_pac_address_keys), "::", stringify!(apdbkey) ) ); } #[repr(C)] #[repr(align(16))] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct user_pac_generic_keys { pub apgakey: __uint128_t, } #[test] fn bindgen_test_layout_user_pac_generic_keys() { 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!(user_pac_generic_keys)) ); assert_eq!( ::std::mem::align_of::(), 16usize, concat!("Alignment of ", stringify!(user_pac_generic_keys)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apgakey) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_pac_generic_keys), "::", stringify!(apgakey) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct user_za_header { pub size: __u32, pub max_size: __u32, pub vl: __u16, pub max_vl: __u16, pub flags: __u16, pub __reserved: __u16, } #[test] fn bindgen_test_layout_user_za_header() { 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!(user_za_header)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(user_za_header)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_za_header), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).max_size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(user_za_header), "::", stringify!(max_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vl) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(user_za_header), "::", stringify!(vl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).max_vl) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(user_za_header), "::", stringify!(max_vl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(user_za_header), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).__reserved) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(user_za_header), "::", stringify!(__reserved) ) ); } #[repr(C)] #[repr(align(16))] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_regs { pub regs: user_pt_regs, pub sp_el1: __u64, pub elr_el1: __u64, pub spsr: [__u64; 5usize], pub __bindgen_padding_0: u64, pub fp_regs: user_fpsimd_state, } #[test] fn bindgen_test_layout_kvm_regs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 864usize, concat!("Size of: ", stringify!(kvm_regs)) ); assert_eq!( ::std::mem::align_of::(), 16usize, concat!("Alignment of ", stringify!(kvm_regs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sp_el1) as usize - ptr as usize }, 272usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(sp_el1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).elr_el1) as usize - ptr as usize }, 280usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(elr_el1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).spsr) as usize - ptr as usize }, 288usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(spsr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fp_regs) as usize - ptr as usize }, 336usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(fp_regs) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_vcpu_init { pub target: __u32, pub features: [__u32; 7usize], } #[test] fn bindgen_test_layout_kvm_vcpu_init() { 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!(kvm_vcpu_init)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_vcpu_init)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).target) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_init), "::", stringify!(target) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).features) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_init), "::", stringify!(features) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sregs {} #[test] fn bindgen_test_layout_kvm_sregs() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_sregs)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_sregs)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_fpu {} #[test] fn bindgen_test_layout_kvm_fpu() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_fpu)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_fpu)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_guest_debug_arch { pub dbg_bcr: [__u64; 16usize], pub dbg_bvr: [__u64; 16usize], pub dbg_wcr: [__u64; 16usize], pub dbg_wvr: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_guest_debug_arch() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 512usize, concat!("Size of: ", stringify!(kvm_guest_debug_arch)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_guest_debug_arch)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dbg_bcr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug_arch), "::", stringify!(dbg_bcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dbg_bvr) as usize - ptr as usize }, 128usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug_arch), "::", stringify!(dbg_bvr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dbg_wcr) as usize - ptr as usize }, 256usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug_arch), "::", stringify!(dbg_wcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dbg_wvr) as usize - ptr as usize }, 384usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug_arch), "::", stringify!(dbg_wvr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_debug_exit_arch { pub hsr: __u32, pub hsr_high: __u32, pub far: __u64, } #[test] fn bindgen_test_layout_kvm_debug_exit_arch() { 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!(kvm_debug_exit_arch)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_debug_exit_arch)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hsr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(hsr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hsr_high) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(hsr_high) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).far) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(far) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sync_regs { pub device_irq_level: __u64, } #[test] fn bindgen_test_layout_kvm_sync_regs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_sync_regs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sync_regs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).device_irq_level) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sync_regs), "::", stringify!(device_irq_level) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_pmu_event_filter { pub base_event: __u16, pub nevents: __u16, pub action: __u8, pub pad: [__u8; 3usize], } #[test] fn bindgen_test_layout_kvm_pmu_event_filter() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_pmu_event_filter)) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!("Alignment of ", stringify!(kvm_pmu_event_filter)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).base_event) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(base_event) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nevents) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(nevents) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(action) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 5usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vcpu_events { pub exception: kvm_vcpu_events__bindgen_ty_1, pub reserved: [__u32; 12usize], } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vcpu_events__bindgen_ty_1 { pub serror_pending: __u8, pub serror_has_esr: __u8, pub ext_dabt_pending: __u8, pub pad: [__u8; 5usize], pub serror_esr: __u64, } #[test] fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_1() { 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!(kvm_vcpu_events__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_vcpu_events__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).serror_pending) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(serror_pending) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).serror_has_esr) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(serror_has_esr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ext_dabt_pending) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(ext_dabt_pending) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 3usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).serror_esr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(serror_esr) ) ); } #[test] fn bindgen_test_layout_kvm_vcpu_events() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_vcpu_events)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_vcpu_events)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(exception) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_arm_copy_mte_tags { pub guest_ipa: __u64, pub length: __u64, pub addr: *mut ::std::os::raw::c_void, pub flags: __u64, pub reserved: [__u64; 2usize], } #[test] fn bindgen_test_layout_kvm_arm_copy_mte_tags() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_arm_copy_mte_tags)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_arm_copy_mte_tags)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_ipa) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_arm_copy_mte_tags), "::", stringify!(guest_ipa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_arm_copy_mte_tags), "::", stringify!(length) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_arm_copy_mte_tags), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_arm_copy_mte_tags), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_arm_copy_mte_tags), "::", stringify!(reserved) ) ); } impl Default for kvm_arm_copy_mte_tags { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_arm_counter_offset { pub counter_offset: __u64, pub reserved: __u64, } #[test] fn bindgen_test_layout_kvm_arm_counter_offset() { 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!(kvm_arm_counter_offset)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_arm_counter_offset)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).counter_offset) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_arm_counter_offset), "::", stringify!(counter_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_arm_counter_offset), "::", stringify!(reserved) ) ); } pub const KVM_REG_ARM_STD_BIT_TRNG_V1_0: _bindgen_ty_1 = 0; pub type _bindgen_ty_1 = ::std::os::raw::c_uint; pub const KVM_REG_ARM_STD_HYP_BIT_PV_TIME: _bindgen_ty_2 = 0; pub type _bindgen_ty_2 = ::std::os::raw::c_uint; pub const KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT: _bindgen_ty_3 = 0; pub const KVM_REG_ARM_VENDOR_HYP_BIT_PTP: _bindgen_ty_3 = 1; pub type _bindgen_ty_3 = ::std::os::raw::c_uint; pub const kvm_smccc_filter_action_KVM_SMCCC_FILTER_HANDLE: kvm_smccc_filter_action = 0; pub const kvm_smccc_filter_action_KVM_SMCCC_FILTER_DENY: kvm_smccc_filter_action = 1; pub const kvm_smccc_filter_action_KVM_SMCCC_FILTER_FWD_TO_USER: kvm_smccc_filter_action = 2; pub type kvm_smccc_filter_action = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_smccc_filter { pub base: __u32, pub nr_functions: __u32, pub action: __u8, pub pad: [__u8; 15usize], } #[test] fn bindgen_test_layout_kvm_smccc_filter() { 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!(kvm_smccc_filter)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_smccc_filter)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).base) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_smccc_filter), "::", stringify!(base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr_functions) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_smccc_filter), "::", stringify!(nr_functions) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_smccc_filter), "::", stringify!(action) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 9usize, concat!( "Offset of field: ", stringify!(kvm_smccc_filter), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct reg_mask_range { pub addr: __u64, pub range: __u32, pub reserved: [__u32; 13usize], } #[test] fn bindgen_test_layout_reg_mask_range() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(reg_mask_range)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(reg_mask_range)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(reg_mask_range), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(reg_mask_range), "::", stringify!(range) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(reg_mask_range), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_userspace_memory_region { pub slot: __u32, pub flags: __u32, pub guest_phys_addr: __u64, pub memory_size: __u64, pub userspace_addr: __u64, } #[test] fn bindgen_test_layout_kvm_userspace_memory_region() { 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!(kvm_userspace_memory_region)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_userspace_memory_region)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_phys_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(guest_phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(memory_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).userspace_addr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(userspace_addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_userspace_memory_region2 { pub slot: __u32, pub flags: __u32, pub guest_phys_addr: __u64, pub memory_size: __u64, pub userspace_addr: __u64, pub guest_memfd_offset: __u64, pub guest_memfd: __u32, pub pad1: __u32, pub pad2: [__u64; 14usize], } #[test] fn bindgen_test_layout_kvm_userspace_memory_region2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 160usize, concat!("Size of: ", stringify!(kvm_userspace_memory_region2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_userspace_memory_region2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_phys_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(memory_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).userspace_addr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(userspace_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_memfd_offset) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_memfd_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_memfd) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_memfd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 44usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_level { pub __bindgen_anon_1: kvm_irq_level__bindgen_ty_1, pub level: __u32, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_level__bindgen_ty_1 { pub irq: __u32, pub status: __s32, } #[test] fn bindgen_test_layout_kvm_irq_level__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!(kvm_irq_level__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_level__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_level__bindgen_ty_1), "::", stringify!(irq) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_level__bindgen_ty_1), "::", stringify!(status) ) ); } impl Default for kvm_irq_level__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() } } } impl ::std::fmt::Debug for kvm_irq_level__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_level__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_level() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_level)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_level)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).level) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_level), "::", stringify!(level) ) ); } impl Default for kvm_irq_level { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_level { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_level {{ __bindgen_anon_1: {:?}, level: {:?} }}", self.__bindgen_anon_1, self.level ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irqchip { pub chip_id: __u32, pub pad: __u32, pub chip: kvm_irqchip__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irqchip__bindgen_ty_1 { pub dummy: [::std::os::raw::c_char; 512usize], } #[test] fn bindgen_test_layout_kvm_irqchip__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 512usize, concat!("Size of: ", stringify!(kvm_irqchip__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_irqchip__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dummy) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip__bindgen_ty_1), "::", stringify!(dummy) ) ); } impl Default for kvm_irqchip__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() } } } impl ::std::fmt::Debug for kvm_irqchip__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irqchip__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irqchip() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 520usize, concat!("Size of: ", stringify!(kvm_irqchip)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irqchip)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).chip_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(chip_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).chip) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(chip) ) ); } impl Default for kvm_irqchip { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irqchip { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irqchip {{ chip_id: {:?}, pad: {:?}, chip: {:?} }}", self.chip_id, self.pad, self.chip ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_pit_config { pub flags: __u32, pub pad: [__u32; 15usize], } #[test] fn bindgen_test_layout_kvm_pit_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_pit_config)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_pit_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pit_config), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_pit_config), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_hyperv_exit { pub type_: __u32, pub pad1: __u32, pub u: kvm_hyperv_exit__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_hyperv_exit__bindgen_ty_1 { pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1, pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2, pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 { pub msr: __u32, pub pad2: __u32, pub control: __u64, pub evt_page: __u64, pub msg_page: __u64, } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 32usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(pad2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).evt_page) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(evt_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msg_page) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(msg_page) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 { pub input: __u64, pub result: __u64, pub params: [__u64; 2usize], } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 32usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).input) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(input) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(result) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(params) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 { pub msr: __u32, pub pad2: __u32, pub control: __u64, pub status: __u64, pub send_page: __u64, pub recv_page: __u64, pub pending_page: __u64, } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 48usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(pad2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(status) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).send_page) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(send_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).recv_page) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(recv_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pending_page) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(pending_page) ) ); } #[test] fn bindgen_test_layout_kvm_hyperv_exit__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).synic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(synic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(hcall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).syndbg) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(syndbg) ) ); } impl Default for kvm_hyperv_exit__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() } } } impl ::std::fmt::Debug for kvm_hyperv_exit__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_hyperv_exit__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_hyperv_exit() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 56usize, concat!("Size of: ", stringify!(kvm_hyperv_exit)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_hyperv_exit)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(u) ) ); } impl Default for kvm_hyperv_exit { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_hyperv_exit { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_hyperv_exit {{ type: {:?}, pad1: {:?}, u: {:?} }}", self.type_, self.pad1, self.u ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_xen_exit { pub type_: __u32, pub u: kvm_xen_exit__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_xen_exit__bindgen_ty_1 { pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 { pub longmode: __u32, pub cpl: __u32, pub input: __u64, pub result: __u64, pub params: [__u64; 6usize], } #[test] fn bindgen_test_layout_kvm_xen_exit__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::(), 72usize, concat!( "Size of: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).longmode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(longmode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cpl) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(cpl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).input) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(input) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(result) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(params) ) ); } #[test] fn bindgen_test_layout_kvm_xen_exit__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_xen_exit__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_exit__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1), "::", stringify!(hcall) ) ); } impl Default for kvm_xen_exit__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() } } } impl ::std::fmt::Debug for kvm_xen_exit__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_xen_exit__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_xen_exit() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 80usize, concat!("Size of: ", stringify!(kvm_xen_exit)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_exit)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit), "::", stringify!(u) ) ); } impl Default for kvm_xen_exit { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_xen_exit { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_xen_exit {{ type: {:?}, u: {:?} }}", self.type_, self.u ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run { pub request_interrupt_window: __u8, pub immediate_exit: __u8, pub padding1: [__u8; 6usize], pub exit_reason: __u32, pub ready_for_interrupt_injection: __u8, pub if_flag: __u8, pub flags: __u16, pub cr8: __u64, pub apic_base: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1, pub kvm_valid_regs: __u64, pub kvm_dirty_regs: __u64, pub s: kvm_run__bindgen_ty_2, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1 { pub hw: kvm_run__bindgen_ty_1__bindgen_ty_1, pub fail_entry: kvm_run__bindgen_ty_1__bindgen_ty_2, pub ex: kvm_run__bindgen_ty_1__bindgen_ty_3, pub io: kvm_run__bindgen_ty_1__bindgen_ty_4, pub debug: kvm_run__bindgen_ty_1__bindgen_ty_5, pub mmio: kvm_run__bindgen_ty_1__bindgen_ty_6, pub iocsr_io: kvm_run__bindgen_ty_1__bindgen_ty_7, pub hypercall: kvm_run__bindgen_ty_1__bindgen_ty_8, pub tpr_access: kvm_run__bindgen_ty_1__bindgen_ty_9, pub s390_sieic: kvm_run__bindgen_ty_1__bindgen_ty_10, pub s390_reset_flags: __u64, pub s390_ucontrol: kvm_run__bindgen_ty_1__bindgen_ty_11, pub dcr: kvm_run__bindgen_ty_1__bindgen_ty_12, pub internal: kvm_run__bindgen_ty_1__bindgen_ty_13, pub emulation_failure: kvm_run__bindgen_ty_1__bindgen_ty_14, pub osi: kvm_run__bindgen_ty_1__bindgen_ty_15, pub papr_hcall: kvm_run__bindgen_ty_1__bindgen_ty_16, pub s390_tsch: kvm_run__bindgen_ty_1__bindgen_ty_17, pub epr: kvm_run__bindgen_ty_1__bindgen_ty_18, pub system_event: kvm_run__bindgen_ty_1__bindgen_ty_19, pub s390_stsi: kvm_run__bindgen_ty_1__bindgen_ty_20, pub eoi: kvm_run__bindgen_ty_1__bindgen_ty_21, pub hyperv: kvm_hyperv_exit, pub arm_nisv: kvm_run__bindgen_ty_1__bindgen_ty_22, pub msr: kvm_run__bindgen_ty_1__bindgen_ty_23, pub xen: kvm_xen_exit, pub riscv_sbi: kvm_run__bindgen_ty_1__bindgen_ty_24, pub riscv_csr: kvm_run__bindgen_ty_1__bindgen_ty_25, pub notify: kvm_run__bindgen_ty_1__bindgen_ty_26, pub memory_fault: kvm_run__bindgen_ty_1__bindgen_ty_27, pub padding: [::std::os::raw::c_char; 256usize], } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 { pub hardware_exit_reason: __u64, } #[test] fn bindgen_test_layout_kvm_run__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::(), 8usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hardware_exit_reason) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1), "::", stringify!(hardware_exit_reason) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 { pub hardware_entry_failure_reason: __u64, pub cpu: __u32, } #[test] fn bindgen_test_layout_kvm_run__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::(), 16usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hardware_entry_failure_reason) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2), "::", stringify!(hardware_entry_failure_reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cpu) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2), "::", stringify!(cpu) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 { pub exception: __u32, pub error_code: __u32, } #[test] fn bindgen_test_layout_kvm_run__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::(), 8usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3), "::", stringify!(exception) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error_code) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3), "::", stringify!(error_code) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 { pub direction: __u8, pub size: __u8, pub port: __u16, pub count: __u32, pub data_offset: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_4() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_4)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(direction) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(count) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(data_offset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 { pub arch: kvm_debug_exit_arch, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_5() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_5)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_5) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_5), "::", stringify!(arch) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 { pub phys_addr: __u64, pub data: [__u8; 8usize], pub len: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_6() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_6)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 { pub phys_addr: __u64, pub data: [__u8; 8usize], pub len: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_7() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_7)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 { pub nr: __u64, pub args: [__u64; 6usize], pub ret: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 { pub longmode: __u32, pub flags: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).longmode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1), "::", stringify!(longmode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1), "::", stringify!(flags) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(ret) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_8 {{ nr: {:?}, args: {:?}, ret: {:?}, __bindgen_anon_1: {:?} }}" , self . nr , self . args , self . ret , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 { pub rip: __u64, pub is_write: __u32, pub pad: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_9() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_9)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(rip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(is_write) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 { pub icptcode: __u8, pub ipa: __u16, pub ipb: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_10() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).icptcode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(icptcode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipa) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(ipa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipb) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(ipb) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 { pub trans_exc_code: __u64, pub pgm_code: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_11() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_11) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_exc_code) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11), "::", stringify!(trans_exc_code) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pgm_code) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11), "::", stringify!(pgm_code) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 { pub dcrn: __u32, pub data: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_12() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dcrn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(dcrn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 { pub suberror: __u32, pub ndata: __u32, pub data: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_13() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 136usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).suberror) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(suberror) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(ndata) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 { pub suberror: __u32, pub ndata: __u32, pub flags: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 { pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 { pub insn_size: __u8, pub insn_bytes: [__u8; 15usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit< kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1, > = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).insn_size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1), "::", stringify!(insn_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).insn_bytes) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1), "::", stringify!(insn_bytes) ) ); } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1() { assert_eq!( ::std::mem::size_of::(), 16usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_14) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).suberror) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(suberror) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(ndata) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(flags) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_14 {{ suberror: {:?}, ndata: {:?}, flags: {:?}, __bindgen_anon_1: {:?} }}" , self . suberror , self . ndata , self . flags , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 { pub gprs: [__u64; 32usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_15() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 256usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gprs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15), "::", stringify!(gprs) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 { pub nr: __u64, pub ret: __u64, pub args: [__u64; 9usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_16() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 88usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(ret) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(args) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 { pub subchannel_id: __u16, pub subchannel_nr: __u16, pub io_int_parm: __u32, pub io_int_word: __u32, pub ipb: __u32, pub dequeued: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_17() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 20usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).subchannel_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(subchannel_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).subchannel_nr) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(subchannel_nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io_int_parm) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(io_int_parm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io_int_word) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(io_int_word) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipb) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(ipb) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dequeued) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(dequeued) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 { pub epr: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_18() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_18) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_18) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).epr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_18), "::", stringify!(epr) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 { pub type_: __u32, pub ndata: __u32, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 { pub flags: __u64, pub data: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 128usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1), "::", stringify!(data) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 136usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19), "::", stringify!(ndata) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_19 {{ type: {:?}, ndata: {:?}, __bindgen_anon_1: {:?} }}" , self . type_ , self . ndata , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 { pub addr: __u64, pub ar: __u8, pub reserved: __u8, pub fc: __u8, pub sel1: __u8, pub sel2: __u16, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_20() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_20) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ar) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(ar) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 9usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fc) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(fc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sel1) as usize - ptr as usize }, 11usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(sel1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sel2) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(sel2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 { pub vector: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_21() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 1usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vector) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21), "::", stringify!(vector) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 { pub esr_iss: __u64, pub fault_ipa: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_22() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_22) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).esr_iss) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22), "::", stringify!(esr_iss) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fault_ipa) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22), "::", stringify!(fault_ipa) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 { pub error: __u8, pub pad: [__u8; 7usize], pub reason: __u32, pub index: __u32, pub data: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_23() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_23) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(error) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reason) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(index) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 { pub extension_id: ::std::os::raw::c_ulong, pub function_id: ::std::os::raw::c_ulong, pub args: [::std::os::raw::c_ulong; 6usize], pub ret: [::std::os::raw::c_ulong; 2usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_24() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 80usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).extension_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(extension_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).function_id) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(function_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(ret) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 { pub csr_num: ::std::os::raw::c_ulong, pub new_value: ::std::os::raw::c_ulong, pub write_mask: ::std::os::raw::c_ulong, pub ret_value: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_25() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_25) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csr_num) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(csr_num) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).new_value) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(new_value) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).write_mask) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(write_mask) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret_value) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(ret_value) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_26 { pub flags: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_26() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_26) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_26) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_26), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_27 { pub flags: __u64, pub gpa: __u64, pub size: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_27() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_27) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gpa) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(gpa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(size) ) ); } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 256usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hw) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hw) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fail_entry) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(fail_entry) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ex) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(ex) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(io) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).debug) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(debug) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mmio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(mmio) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).iocsr_io) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(iocsr_io) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hypercall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hypercall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tpr_access) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(tpr_access) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_sieic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_sieic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_reset_flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_reset_flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_ucontrol) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_ucontrol) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dcr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(dcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).internal) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(internal) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).emulation_failure) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(emulation_failure) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).osi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(osi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).papr_hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(papr_hcall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_tsch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_tsch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).epr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(epr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).system_event) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(system_event) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_stsi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_stsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).eoi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(eoi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hyperv) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hyperv) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arm_nisv) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(arm_nisv) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xen) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(xen) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).riscv_sbi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(riscv_sbi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).riscv_csr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(riscv_csr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).notify) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(notify) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_fault) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(memory_fault) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(padding) ) ); } impl Default for kvm_run__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_run__bindgen_ty_1 {{ union }}") } } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_2 { pub regs: kvm_sync_regs, pub padding: [::std::os::raw::c_char; 2048usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2048usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run__bindgen_ty_2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_2), "::", stringify!(regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_2), "::", stringify!(padding) ) ); } impl Default for kvm_run__bindgen_ty_2 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_2 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_run__bindgen_ty_2 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_run() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2352usize, concat!("Size of: ", stringify!(kvm_run)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).request_interrupt_window) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(request_interrupt_window) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).immediate_exit) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(immediate_exit) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding1) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(padding1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exit_reason) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(exit_reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ready_for_interrupt_injection) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(ready_for_interrupt_injection) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).if_flag) as usize - ptr as usize }, 13usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(if_flag) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr8) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(cr8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apic_base) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(apic_base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).kvm_valid_regs) as usize - ptr as usize }, 288usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(kvm_valid_regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).kvm_dirty_regs) as usize - ptr as usize }, 296usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(kvm_dirty_regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s) as usize - ptr as usize }, 304usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(s) ) ); } impl Default for kvm_run { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run {{ request_interrupt_window: {:?}, immediate_exit: {:?}, padding1: {:?}, exit_reason: {:?}, ready_for_interrupt_injection: {:?}, if_flag: {:?}, flags: {:?}, cr8: {:?}, apic_base: {:?}, __bindgen_anon_1: {:?}, kvm_valid_regs: {:?}, kvm_dirty_regs: {:?}, s: {:?} }}" , self . request_interrupt_window , self . immediate_exit , self . padding1 , self . exit_reason , self . ready_for_interrupt_injection , self . if_flag , self . flags , self . cr8 , self . apic_base , self . __bindgen_anon_1 , self . kvm_valid_regs , self . kvm_dirty_regs , self . s) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_coalesced_mmio_zone { pub addr: __u64, pub size: __u32, pub __bindgen_anon_1: kvm_coalesced_mmio_zone__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_coalesced_mmio_zone__bindgen_ty_1 { pub pad: __u32, pub pio: __u32, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_zone__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!(kvm_coalesced_mmio_zone__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1), "::", stringify!(pio) ) ); } impl Default for kvm_coalesced_mmio_zone__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() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_zone__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_coalesced_mmio_zone__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_zone() { 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!(kvm_coalesced_mmio_zone)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio_zone)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone), "::", stringify!(size) ) ); } impl Default for kvm_coalesced_mmio_zone { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_zone { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_coalesced_mmio_zone {{ addr: {:?}, size: {:?}, __bindgen_anon_1: {:?} }}", self.addr, self.size, self.__bindgen_anon_1 ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_coalesced_mmio { pub phys_addr: __u64, pub len: __u32, pub __bindgen_anon_1: kvm_coalesced_mmio__bindgen_ty_1, pub data: [__u8; 8usize], } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_coalesced_mmio__bindgen_ty_1 { pub pad: __u32, pub pio: __u32, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio__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!(kvm_coalesced_mmio__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_coalesced_mmio__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio__bindgen_ty_1), "::", stringify!(pio) ) ); } impl Default for kvm_coalesced_mmio__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() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_coalesced_mmio__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_coalesced_mmio() { 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!(kvm_coalesced_mmio)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(data) ) ); } impl Default for kvm_coalesced_mmio { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_coalesced_mmio {{ phys_addr: {:?}, len: {:?}, __bindgen_anon_1: {:?}, data: {:?} }}" , self . phys_addr , self . len , self . __bindgen_anon_1 , self . data) } } #[repr(C)] pub struct kvm_coalesced_mmio_ring { pub first: __u32, pub last: __u32, pub coalesced_mmio: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_ring() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_coalesced_mmio_ring)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio_ring)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).first) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(first) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).last) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(last) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).coalesced_mmio) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(coalesced_mmio) ) ); } impl Default for kvm_coalesced_mmio_ring { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_ring { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_coalesced_mmio_ring {{ first: {:?}, last: {:?}, coalesced_mmio: {:?} }}", self.first, self.last, self.coalesced_mmio ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_translation { pub linear_address: __u64, pub physical_address: __u64, pub valid: __u8, pub writeable: __u8, pub usermode: __u8, pub pad: [__u8; 5usize], } #[test] fn bindgen_test_layout_kvm_translation() { 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!(kvm_translation)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_translation)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).linear_address) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(linear_address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).physical_address) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(physical_address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).valid) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(valid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).writeable) as usize - ptr as usize }, 17usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(writeable) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).usermode) as usize - ptr as usize }, 18usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(usermode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 19usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_interrupt { pub irq: __u32, } #[test] fn bindgen_test_layout_kvm_interrupt() { 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!(kvm_interrupt)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_interrupt)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_interrupt), "::", stringify!(irq) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_dirty_log { pub slot: __u32, pub padding1: __u32, pub __bindgen_anon_1: kvm_dirty_log__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_dirty_log__bindgen_ty_1 { pub dirty_bitmap: *mut ::std::os::raw::c_void, pub padding2: __u64, } #[test] fn bindgen_test_layout_kvm_dirty_log__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_dirty_log__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_log__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dirty_bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log__bindgen_ty_1), "::", stringify!(dirty_bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding2) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log__bindgen_ty_1), "::", stringify!(padding2) ) ); } impl Default for kvm_dirty_log__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() } } } impl ::std::fmt::Debug for kvm_dirty_log__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_dirty_log__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_dirty_log() { 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!(kvm_dirty_log)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_log)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding1) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log), "::", stringify!(padding1) ) ); } impl Default for kvm_dirty_log { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_dirty_log { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_dirty_log {{ slot: {:?}, padding1: {:?}, __bindgen_anon_1: {:?} }}", self.slot, self.padding1, self.__bindgen_anon_1 ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_clear_dirty_log { pub slot: __u32, pub num_pages: __u32, pub first_page: __u64, pub __bindgen_anon_1: kvm_clear_dirty_log__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_clear_dirty_log__bindgen_ty_1 { pub dirty_bitmap: *mut ::std::os::raw::c_void, pub padding2: __u64, } #[test] fn bindgen_test_layout_kvm_clear_dirty_log__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_clear_dirty_log__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dirty_bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1), "::", stringify!(dirty_bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding2) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1), "::", stringify!(padding2) ) ); } impl Default for kvm_clear_dirty_log__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() } } } impl ::std::fmt::Debug for kvm_clear_dirty_log__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_clear_dirty_log__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_clear_dirty_log() { 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!(kvm_clear_dirty_log)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_clear_dirty_log)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_pages) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(num_pages) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).first_page) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(first_page) ) ); } impl Default for kvm_clear_dirty_log { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_clear_dirty_log { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_clear_dirty_log {{ slot: {:?}, num_pages: {:?}, first_page: {:?}, __bindgen_anon_1: {:?} }}" , self . slot , self . num_pages , self . first_page , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_signal_mask { pub len: __u32, pub sigset: __IncompleteArrayField<__u8>, } #[test] fn bindgen_test_layout_kvm_signal_mask() { 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!(kvm_signal_mask)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_signal_mask)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_signal_mask), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sigset) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_signal_mask), "::", stringify!(sigset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_tpr_access_ctl { pub enabled: __u32, pub flags: __u32, pub reserved: [__u32; 8usize], } #[test] fn bindgen_test_layout_kvm_tpr_access_ctl() { 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!(kvm_tpr_access_ctl)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_tpr_access_ctl)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).enabled) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(enabled) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vapic_addr { pub vapic_addr: __u64, } #[test] fn bindgen_test_layout_kvm_vapic_addr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_vapic_addr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_vapic_addr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vapic_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vapic_addr), "::", stringify!(vapic_addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_mp_state { pub mp_state: __u32, } #[test] fn bindgen_test_layout_kvm_mp_state() { 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!(kvm_mp_state)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_mp_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mp_state) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_mp_state), "::", stringify!(mp_state) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_guest_debug { pub control: __u32, pub pad: __u32, pub arch: kvm_guest_debug_arch, } #[test] fn bindgen_test_layout_kvm_guest_debug() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 520usize, concat!("Size of: ", stringify!(kvm_guest_debug)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_guest_debug)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arch) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(arch) ) ); } pub const kvm_ioeventfd_flag_nr_datamatch: _bindgen_ty_4 = 0; pub const kvm_ioeventfd_flag_nr_pio: _bindgen_ty_4 = 1; pub const kvm_ioeventfd_flag_nr_deassign: _bindgen_ty_4 = 2; pub const kvm_ioeventfd_flag_nr_virtio_ccw_notify: _bindgen_ty_4 = 3; pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_4 = 4; pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_4 = 5; pub type _bindgen_ty_4 = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_ioeventfd { pub datamatch: __u64, pub addr: __u64, pub len: __u32, pub fd: __s32, pub flags: __u32, pub pad: [__u8; 36usize], } #[test] fn bindgen_test_layout_kvm_ioeventfd() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_ioeventfd)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_ioeventfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).datamatch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(datamatch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(pad) ) ); } impl Default for kvm_ioeventfd { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_enable_cap { pub cap: __u32, pub flags: __u32, pub args: [__u64; 4usize], pub pad: [__u8; 64usize], } #[test] fn bindgen_test_layout_kvm_enable_cap() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 104usize, concat!("Size of: ", stringify!(kvm_enable_cap)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_enable_cap)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(cap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(pad) ) ); } impl Default for kvm_enable_cap { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_irqchip { pub irqchip: __u32, pub pin: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_irqchip() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing_irqchip)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_irqchip)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irqchip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_irqchip), "::", stringify!(irqchip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pin) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_irqchip), "::", stringify!(pin) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_routing_msi { pub address_lo: __u32, pub address_hi: __u32, pub data: __u32, pub __bindgen_anon_1: kvm_irq_routing_msi__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_routing_msi__bindgen_ty_1 { pub pad: __u32, pub devid: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_msi__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!(kvm_irq_routing_msi__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_irq_routing_msi__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).devid) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi__bindgen_ty_1), "::", stringify!(devid) ) ); } impl Default for kvm_irq_routing_msi__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() } } } impl ::std::fmt::Debug for kvm_irq_routing_msi__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_routing_msi__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_routing_msi() { 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!(kvm_irq_routing_msi)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_msi)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_lo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(address_lo) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_hi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(address_hi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(data) ) ); } impl Default for kvm_irq_routing_msi { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing_msi { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_irq_routing_msi {{ address_lo: {:?}, address_hi: {:?}, data: {:?}, __bindgen_anon_1: {:?} }}" , self . address_lo , self . address_hi , self . data , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_s390_adapter { pub ind_addr: __u64, pub summary_addr: __u64, pub ind_offset: __u64, pub summary_offset: __u32, pub adapter_id: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_s390_adapter() { 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!(kvm_irq_routing_s390_adapter)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing_s390_adapter)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ind_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(ind_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).summary_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(summary_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ind_offset) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(ind_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).summary_offset) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(summary_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).adapter_id) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(adapter_id) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_hv_sint { pub vcpu: __u32, pub sint: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_hv_sint() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing_hv_sint)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_hv_sint)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_hv_sint), "::", stringify!(vcpu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sint) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_hv_sint), "::", stringify!(sint) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_xen_evtchn { pub port: __u32, pub vcpu: __u32, pub priority: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_xen_evtchn() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(kvm_irq_routing_xen_evtchn)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_xen_evtchn)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(vcpu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(priority) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_routing_entry { pub gsi: __u32, pub type_: __u32, pub flags: __u32, pub pad: __u32, pub u: kvm_irq_routing_entry__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_routing_entry__bindgen_ty_1 { pub irqchip: kvm_irq_routing_irqchip, pub msi: kvm_irq_routing_msi, pub adapter: kvm_irq_routing_s390_adapter, pub hv_sint: kvm_irq_routing_hv_sint, pub xen_evtchn: kvm_irq_routing_xen_evtchn, pub pad: [__u32; 8usize], } #[test] fn bindgen_test_layout_kvm_irq_routing_entry__bindgen_ty_1() { 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!(kvm_irq_routing_entry__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_irq_routing_entry__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irqchip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(irqchip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(msi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).adapter) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(adapter) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hv_sint) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(hv_sint) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xen_evtchn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(xen_evtchn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(pad) ) ); } impl Default for kvm_irq_routing_entry__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() } } } impl ::std::fmt::Debug for kvm_irq_routing_entry__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_routing_entry__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_routing_entry() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_irq_routing_entry)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing_entry)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gsi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(gsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(u) ) ); } impl Default for kvm_irq_routing_entry { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing_entry { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_routing_entry {{ gsi: {:?}, type: {:?}, flags: {:?}, pad: {:?}, u: {:?} }}", self.gsi, self.type_, self.flags, self.pad, self.u ) } } #[repr(C)] pub struct kvm_irq_routing { pub nr: __u32, pub flags: __u32, pub entries: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_irq_routing() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(entries) ) ); } impl Default for kvm_irq_routing { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_routing {{ nr: {:?}, flags: {:?}, entries: {:?} }}", self.nr, self.flags, self.entries ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irqfd { pub fd: __u32, pub gsi: __u32, pub flags: __u32, pub resamplefd: __u32, pub pad: [__u8; 16usize], } #[test] fn bindgen_test_layout_kvm_irqfd() { 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!(kvm_irqfd)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irqfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gsi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(gsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).resamplefd) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(resamplefd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_clock_data { pub clock: __u64, pub flags: __u32, pub pad0: __u32, pub realtime: __u64, pub host_tsc: __u64, pub pad: [__u32; 4usize], } #[test] fn bindgen_test_layout_kvm_clock_data() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_clock_data)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_clock_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).clock) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(clock) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).realtime) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(realtime) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).host_tsc) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(host_tsc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_config_tlb { pub params: __u64, pub array: __u64, pub mmu_type: __u32, pub array_len: __u32, } #[test] fn bindgen_test_layout_kvm_config_tlb() { 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!(kvm_config_tlb)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_config_tlb)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(params) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(array) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mmu_type) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(mmu_type) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).array_len) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(array_len) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_dirty_tlb { pub bitmap: __u64, pub num_dirty: __u32, } #[test] fn bindgen_test_layout_kvm_dirty_tlb() { 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!(kvm_dirty_tlb)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_tlb)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_tlb), "::", stringify!(bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_dirty) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_dirty_tlb), "::", stringify!(num_dirty) ) ); } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_reg_list { pub n: __u64, pub reg: __IncompleteArrayField<__u64>, } #[test] fn bindgen_test_layout_kvm_reg_list() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_reg_list)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_reg_list)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).n) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_reg_list), "::", stringify!(n) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reg) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_reg_list), "::", stringify!(reg) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_one_reg { pub id: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_one_reg() { 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!(kvm_one_reg)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_one_reg)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_one_reg), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_one_reg), "::", stringify!(addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_msi { pub address_lo: __u32, pub address_hi: __u32, pub data: __u32, pub flags: __u32, pub devid: __u32, pub pad: [__u8; 12usize], } #[test] fn bindgen_test_layout_kvm_msi() { 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!(kvm_msi)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_msi)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_lo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(address_lo) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_hi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(address_hi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).devid) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(devid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_arm_device_addr { pub id: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_arm_device_addr() { 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!(kvm_arm_device_addr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_arm_device_addr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_arm_device_addr), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_arm_device_addr), "::", stringify!(addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_create_device { pub type_: __u32, pub fd: __u32, pub flags: __u32, } #[test] fn bindgen_test_layout_kvm_create_device() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(kvm_create_device)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_create_device)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_device_attr { pub flags: __u32, pub group: __u32, pub attr: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_device_attr() { 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!(kvm_device_attr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_device_attr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).group) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(group) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).attr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(attr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(addr) ) ); } pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_20: kvm_device_type = 1; pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_42: kvm_device_type = 2; pub const kvm_device_type_KVM_DEV_TYPE_XICS: kvm_device_type = 3; pub const kvm_device_type_KVM_DEV_TYPE_VFIO: kvm_device_type = 4; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2: kvm_device_type = 5; pub const kvm_device_type_KVM_DEV_TYPE_FLIC: kvm_device_type = 6; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3: kvm_device_type = 7; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_ITS: kvm_device_type = 8; pub const kvm_device_type_KVM_DEV_TYPE_XIVE: kvm_device_type = 9; pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10; pub const kvm_device_type_KVM_DEV_TYPE_RISCV_AIA: kvm_device_type = 11; pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 12; pub type kvm_device_type = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vfio_spapr_tce { pub groupfd: __s32, pub tablefd: __s32, } #[test] fn bindgen_test_layout_kvm_vfio_spapr_tce() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_vfio_spapr_tce)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_vfio_spapr_tce)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).groupfd) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vfio_spapr_tce), "::", stringify!(groupfd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tablefd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_vfio_spapr_tce), "::", stringify!(tablefd) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_enc_region { pub addr: __u64, pub size: __u64, } #[test] fn bindgen_test_layout_kvm_enc_region() { 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!(kvm_enc_region)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_enc_region)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_enc_region), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_enc_region), "::", stringify!(size) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_dirty_gfn { pub flags: __u32, pub slot: __u32, pub offset: __u64, } #[test] fn bindgen_test_layout_kvm_dirty_gfn() { 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!(kvm_dirty_gfn)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_gfn)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(offset) ) ); } #[doc = " struct kvm_stats_header - Header of per vm/vcpu binary statistics data.\n @flags: Some extra information for header, always 0 for now.\n @name_size: The size in bytes of the memory which contains statistics\n name string including trailing '\\0'. The memory is allocated\n at the send of statistics descriptor.\n @num_desc: The number of statistics the vm or vcpu has.\n @id_offset: The offset of the vm/vcpu stats' id string in the file pointed\n by vm/vcpu stats fd.\n @desc_offset: The offset of the vm/vcpu stats' descriptor block in the file\n pointd by vm/vcpu stats fd.\n @data_offset: The offset of the vm/vcpu stats' data block in the file\n pointed by vm/vcpu stats fd.\n\n This is the header userspace needs to read from stats fd before any other\n readings. It is used by userspace to discover all the information about the\n vm/vcpu's binary statistics.\n Userspace reads this header from the start of the vm/vcpu's stats fd."] #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_stats_header { pub flags: __u32, pub name_size: __u32, pub num_desc: __u32, pub id_offset: __u32, pub desc_offset: __u32, pub data_offset: __u32, } #[test] fn bindgen_test_layout_kvm_stats_header() { 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!(kvm_stats_header)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_stats_header)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).name_size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(name_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_desc) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(num_desc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id_offset) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(id_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).desc_offset) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(desc_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(data_offset) ) ); } #[doc = " struct kvm_stats_desc - Descriptor of a KVM statistics.\n @flags: Annotations of the stats, like type, unit, etc.\n @exponent: Used together with @flags to determine the unit.\n @size: The number of data items for this stats.\n Every data item is of type __u64.\n @offset: The offset of the stats to the start of stat structure in\n structure kvm or kvm_vcpu.\n @bucket_size: A parameter value used for histogram stats. It is only used\n\t\tfor linear histogram stats, specifying the size of the bucket;\n @name: The name string for the stats. Its size is indicated by the\n &kvm_stats_header->name_size."] #[repr(C)] #[derive(Debug, Default)] pub struct kvm_stats_desc { pub flags: __u32, pub exponent: __s16, pub size: __u16, pub offset: __u32, pub bucket_size: __u32, pub name: __IncompleteArrayField<::std::os::raw::c_char>, } #[test] fn bindgen_test_layout_kvm_stats_desc() { 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!(kvm_stats_desc)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_stats_desc)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exponent) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(exponent) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bucket_size) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(bucket_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(name) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_memory_attributes { pub address: __u64, pub size: __u64, pub attributes: __u64, pub flags: __u64, } #[test] fn bindgen_test_layout_kvm_memory_attributes() { 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!(kvm_memory_attributes)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_memory_attributes)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).attributes) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(attributes) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_create_guest_memfd { pub size: __u64, pub flags: __u64, pub reserved: [__u64; 6usize], } #[test] fn bindgen_test_layout_kvm_create_guest_memfd() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_create_guest_memfd)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_create_guest_memfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(reserved) ) ); } pub type __uint128_t = u128; kvm-bindings-0.10.0/src/arm64/fam_wrappers.rs000064400000000000000000000031661046102023000170540ustar 00000000000000// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 use vmm_sys_util::fam::{FamStruct, FamStructWrapper}; use arm64::bindings::*; // There is no constant in the kernel as far as the maximum number // of registers on arm, but KVM_GET_REG_LIST usually returns around 450. const ARM64_REGS_MAX: usize = 500; // Implement the FamStruct trait for kvm_reg_list. generate_fam_struct_impl!(kvm_reg_list, u64, reg, u64, n, ARM64_REGS_MAX); // Implement the PartialEq trait for kvm_reg_list. impl PartialEq for kvm_reg_list { fn eq(&self, other: &kvm_reg_list) -> bool { // No need to call entries's eq, FamStructWrapper's PartialEq will do it for you self.n == other.n } } /// Wrapper over the `kvm_reg_list` structure. /// /// The `kvm_reg_list` structure contains a flexible array member. For details check the /// [KVM API](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt) /// documentation on `kvm_reg_list`. To provide safe access to /// the array elements, this type is implemented using /// [FamStructWrapper](../vmm_sys_util/fam/struct.FamStructWrapper.html). pub type RegList = FamStructWrapper; #[cfg(test)] mod tests { use super::RegList; #[test] fn test_reg_list_eq() { let mut wrapper = RegList::new(1).unwrap(); assert_eq!(wrapper.as_slice().len(), 1); let mut wrapper2 = wrapper.clone(); assert!(wrapper == wrapper2); wrapper.as_mut_slice()[0] = 1; assert!(wrapper != wrapper2); wrapper2.as_mut_slice()[0] = 1; assert!(wrapper == wrapper2); } } kvm-bindings-0.10.0/src/arm64/mod.rs000064400000000000000000000006051046102023000151400ustar 00000000000000// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #[allow(clippy::all)] #[allow(clippy::undocumented_unsafe_blocks)] pub mod bindings; #[cfg(feature = "fam-wrappers")] pub mod fam_wrappers; #[cfg(feature = "serde")] mod serialize; pub use self::bindings::*; #[cfg(feature = "fam-wrappers")] pub use self::fam_wrappers::*; kvm-bindings-0.10.0/src/arm64/serialize.rs000064400000000000000000000064301046102023000163520ustar 00000000000000use bindings::{ kvm_mp_state, kvm_one_reg, kvm_regs, kvm_vcpu_init, user_fpsimd_state, user_pt_regs, }; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use zerocopy::{transmute, AsBytes}; serde_impls! { user_pt_regs, user_fpsimd_state, kvm_regs, kvm_vcpu_init, kvm_mp_state, kvm_one_reg } #[cfg(test)] mod tests { use bindings::*; use serde::{Deserialize, Serialize}; fn is_serde Deserialize<'de> + Default>() { let serialized = bincode::serialize(&T::default()).unwrap(); let deserialized = bincode::deserialize::(serialized.as_ref()).unwrap(); let serialized_again = bincode::serialize(&deserialized).unwrap(); // Compare the serialized state after a roundtrip, to work around issues with // bindings not implementing `PartialEq`. assert_eq!(serialized, serialized_again); } #[test] fn static_assert_serde_implementations() { // This test statically (= at compile-time) asserts that various bindgen generated // structures implement serde's `Serialize` and `Deserialize` traits. // This is to make sure that we do not accidentally remove those implementations // when regenerating bindings. If this test fails to compile, please add // // #[cfg_attr( // feature = "serde", // derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) // )] // // to all structures causing compilation errors (we need the zerocopy traits, as the // `Serialize` and `Deserialize` implementations are provided by the `serde_impls!` macro // above, which implements serialization based on zerocopy's `FromBytes` and `AsBytes` // traits that it expects to be derived). // // NOTE: This only include "top-level" items, and does not list out bindgen-anonymous types // (e.g. types like `kvm_vcpu_events__bindgen_ty_5`). These types can change name across // bindgen versions. If after re-adding the derives to all the below items you can compile // errors about anonymous types not implementing `Serialize`/`Deserialize`, please also add // the derives to all anonymous types references in the definitions of the below items. is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); } fn is_serde_json Deserialize<'de> + Default>() { let serialized = serde_json::to_string(&T::default()).unwrap(); let deserialized = serde_json::from_str::(serialized.as_ref()).unwrap(); let serialized_again = serde_json::to_string(&deserialized).unwrap(); // Compare the serialized state after a roundtrip, to work around issues with // bindings not implementing `PartialEq`. assert_eq!(serialized, serialized_again); } #[test] fn test_json_serde() { is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); } } kvm-bindings-0.10.0/src/lib.rs000064400000000000000000000016351046102023000142020ustar 00000000000000// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 //! Rust FFI bindings to KVM, generated using [bindgen](https://crates.io/crates/bindgen). #![allow(non_upper_case_globals)] #![allow(non_camel_case_types)] #![allow(non_snake_case)] #![cfg_attr(docsrs, feature(doc_auto_cfg))] #[cfg(feature = "fam-wrappers")] #[macro_use] extern crate vmm_sys_util; #[cfg(feature = "serde")] extern crate serde; #[cfg(feature = "serde")] extern crate zerocopy; #[cfg(feature = "serde")] #[macro_use] mod serialize; #[cfg(target_arch = "x86_64")] mod x86_64; #[cfg(target_arch = "x86_64")] pub use self::x86_64::*; #[cfg(any(target_arch = "arm", target_arch = "aarch64"))] mod arm64; #[cfg(any(target_arch = "arm", target_arch = "aarch64"))] pub use self::arm64::*; #[cfg(target_arch = "riscv64")] mod riscv64; #[cfg(target_arch = "riscv64")] pub use self::riscv64::*; kvm-bindings-0.10.0/src/riscv64/bindings.rs000064400000000000000000007673251046102023000165500ustar 00000000000000/* automatically generated by rust-bindgen 0.64.0 */ #[repr(C)] #[derive(Default)] pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); impl __IncompleteArrayField { #[inline] pub const fn new() -> Self { __IncompleteArrayField(::std::marker::PhantomData, []) } #[inline] pub fn as_ptr(&self) -> *const T { self as *const _ as *const T } #[inline] pub fn as_mut_ptr(&mut self) -> *mut T { self as *mut _ as *mut T } #[inline] pub unsafe fn as_slice(&self, len: usize) -> &[T] { ::std::slice::from_raw_parts(self.as_ptr(), len) } #[inline] pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } } impl ::std::fmt::Debug for __IncompleteArrayField { fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { fmt.write_str("__IncompleteArrayField") } } pub const __BITS_PER_LONG_LONG: u32 = 64; pub const __FD_SETSIZE: u32 = 1024; pub const _IOC_NRBITS: u32 = 8; pub const _IOC_TYPEBITS: u32 = 8; pub const _IOC_SIZEBITS: u32 = 14; pub const _IOC_DIRBITS: u32 = 2; pub const _IOC_NRMASK: u32 = 255; pub const _IOC_TYPEMASK: u32 = 255; pub const _IOC_SIZEMASK: u32 = 16383; pub const _IOC_DIRMASK: u32 = 3; pub const _IOC_NRSHIFT: u32 = 0; pub const _IOC_TYPESHIFT: u32 = 8; pub const _IOC_SIZESHIFT: u32 = 16; pub const _IOC_DIRSHIFT: u32 = 30; pub const _IOC_NONE: u32 = 0; pub const _IOC_WRITE: u32 = 1; pub const _IOC_READ: u32 = 2; pub const IOC_IN: u32 = 1073741824; pub const IOC_OUT: u32 = 2147483648; pub const IOC_INOUT: u32 = 3221225472; pub const IOCSIZE_MASK: u32 = 1073676288; pub const IOCSIZE_SHIFT: u32 = 16; pub const PTRACE_GETFDPIC: u32 = 33; pub const PTRACE_GETFDPIC_EXEC: u32 = 0; pub const PTRACE_GETFDPIC_INTERP: u32 = 1; pub const RISCV_MAX_VLENB: u32 = 8192; pub const KVM_COALESCED_MMIO_PAGE_OFFSET: u32 = 1; pub const KVM_INTERRUPT_SET: i32 = -1; pub const KVM_INTERRUPT_UNSET: i32 = -2; pub const KVM_RISCV_MODE_S: u32 = 1; pub const KVM_RISCV_MODE_U: u32 = 0; pub const KVM_RISCV_TIMER_STATE_OFF: u32 = 0; pub const KVM_RISCV_TIMER_STATE_ON: u32 = 1; pub const KVM_REG_RISCV_TYPE_MASK: u32 = 4278190080; pub const KVM_REG_RISCV_TYPE_SHIFT: u32 = 24; pub const KVM_REG_RISCV_SUBTYPE_MASK: u32 = 16711680; pub const KVM_REG_RISCV_SUBTYPE_SHIFT: u32 = 16; pub const KVM_REG_RISCV_CONFIG: u32 = 16777216; pub const KVM_REG_RISCV_CORE: u32 = 33554432; pub const KVM_REG_RISCV_CSR: u32 = 50331648; pub const KVM_REG_RISCV_CSR_GENERAL: u32 = 0; pub const KVM_REG_RISCV_CSR_AIA: u32 = 65536; pub const KVM_REG_RISCV_CSR_SMSTATEEN: u32 = 131072; pub const KVM_REG_RISCV_TIMER: u32 = 67108864; pub const KVM_REG_RISCV_FP_F: u32 = 83886080; pub const KVM_REG_RISCV_FP_D: u32 = 100663296; pub const KVM_REG_RISCV_ISA_EXT: u32 = 117440512; pub const KVM_REG_RISCV_ISA_SINGLE: u32 = 0; pub const KVM_REG_RISCV_ISA_MULTI_EN: u32 = 65536; pub const KVM_REG_RISCV_ISA_MULTI_DIS: u32 = 131072; pub const KVM_REG_RISCV_SBI_EXT: u32 = 134217728; pub const KVM_REG_RISCV_SBI_SINGLE: u32 = 0; pub const KVM_REG_RISCV_SBI_MULTI_EN: u32 = 65536; pub const KVM_REG_RISCV_SBI_MULTI_DIS: u32 = 131072; pub const KVM_REG_RISCV_VECTOR: u32 = 150994944; pub const KVM_REG_RISCV_SBI_STATE: u32 = 167772160; pub const KVM_REG_RISCV_SBI_STA: u32 = 0; pub const KVM_DEV_RISCV_APLIC_ALIGN: u32 = 4096; pub const KVM_DEV_RISCV_APLIC_SIZE: u32 = 16384; pub const KVM_DEV_RISCV_APLIC_MAX_HARTS: u32 = 16384; pub const KVM_DEV_RISCV_IMSIC_ALIGN: u32 = 4096; pub const KVM_DEV_RISCV_IMSIC_SIZE: u32 = 4096; pub const KVM_DEV_RISCV_AIA_GRP_CONFIG: u32 = 0; pub const KVM_DEV_RISCV_AIA_CONFIG_MODE: u32 = 0; pub const KVM_DEV_RISCV_AIA_CONFIG_IDS: u32 = 1; pub const KVM_DEV_RISCV_AIA_CONFIG_SRCS: u32 = 2; pub const KVM_DEV_RISCV_AIA_CONFIG_GROUP_BITS: u32 = 3; pub const KVM_DEV_RISCV_AIA_CONFIG_GROUP_SHIFT: u32 = 4; pub const KVM_DEV_RISCV_AIA_CONFIG_HART_BITS: u32 = 5; pub const KVM_DEV_RISCV_AIA_CONFIG_GUEST_BITS: u32 = 6; pub const KVM_DEV_RISCV_AIA_MODE_EMUL: u32 = 0; pub const KVM_DEV_RISCV_AIA_MODE_HWACCEL: u32 = 1; pub const KVM_DEV_RISCV_AIA_MODE_AUTO: u32 = 2; pub const KVM_DEV_RISCV_AIA_IDS_MIN: u32 = 63; pub const KVM_DEV_RISCV_AIA_IDS_MAX: u32 = 2048; pub const KVM_DEV_RISCV_AIA_SRCS_MAX: u32 = 1024; pub const KVM_DEV_RISCV_AIA_GROUP_BITS_MAX: u32 = 8; pub const KVM_DEV_RISCV_AIA_GROUP_SHIFT_MIN: u32 = 24; pub const KVM_DEV_RISCV_AIA_GROUP_SHIFT_MAX: u32 = 56; pub const KVM_DEV_RISCV_AIA_HART_BITS_MAX: u32 = 16; pub const KVM_DEV_RISCV_AIA_GUEST_BITS_MAX: u32 = 8; pub const KVM_DEV_RISCV_AIA_GRP_ADDR: u32 = 1; pub const KVM_DEV_RISCV_AIA_ADDR_APLIC: u32 = 0; pub const KVM_DEV_RISCV_AIA_ADDR_MAX: u32 = 16385; pub const KVM_DEV_RISCV_AIA_GRP_CTRL: u32 = 2; pub const KVM_DEV_RISCV_AIA_CTRL_INIT: u32 = 0; pub const KVM_DEV_RISCV_AIA_GRP_APLIC: u32 = 3; pub const KVM_DEV_RISCV_AIA_GRP_IMSIC: u32 = 4; pub const KVM_DEV_RISCV_AIA_IMSIC_ISEL_BITS: u32 = 12; pub const KVM_DEV_RISCV_AIA_IMSIC_ISEL_MASK: u32 = 4095; pub const KVM_NR_IRQCHIPS: u32 = 1; pub const KVM_API_VERSION: u32 = 12; pub const KVM_MEM_LOG_DIRTY_PAGES: u32 = 1; pub const KVM_MEM_READONLY: u32 = 2; pub const KVM_MEM_GUEST_MEMFD: u32 = 4; pub const KVM_PIT_SPEAKER_DUMMY: u32 = 1; pub const KVM_EXIT_HYPERV_SYNIC: u32 = 1; pub const KVM_EXIT_HYPERV_HCALL: u32 = 2; pub const KVM_EXIT_HYPERV_SYNDBG: u32 = 3; pub const KVM_EXIT_XEN_HCALL: u32 = 1; pub const KVM_S390_GET_SKEYS_NONE: u32 = 1; pub const KVM_S390_SKEYS_MAX: u32 = 1048576; pub const KVM_EXIT_UNKNOWN: u32 = 0; pub const KVM_EXIT_EXCEPTION: u32 = 1; pub const KVM_EXIT_IO: u32 = 2; pub const KVM_EXIT_HYPERCALL: u32 = 3; pub const KVM_EXIT_DEBUG: u32 = 4; pub const KVM_EXIT_HLT: u32 = 5; pub const KVM_EXIT_MMIO: u32 = 6; pub const KVM_EXIT_IRQ_WINDOW_OPEN: u32 = 7; pub const KVM_EXIT_SHUTDOWN: u32 = 8; pub const KVM_EXIT_FAIL_ENTRY: u32 = 9; pub const KVM_EXIT_INTR: u32 = 10; pub const KVM_EXIT_SET_TPR: u32 = 11; pub const KVM_EXIT_TPR_ACCESS: u32 = 12; pub const KVM_EXIT_S390_SIEIC: u32 = 13; pub const KVM_EXIT_S390_RESET: u32 = 14; pub const KVM_EXIT_DCR: u32 = 15; pub const KVM_EXIT_NMI: u32 = 16; pub const KVM_EXIT_INTERNAL_ERROR: u32 = 17; pub const KVM_EXIT_OSI: u32 = 18; pub const KVM_EXIT_PAPR_HCALL: u32 = 19; pub const KVM_EXIT_S390_UCONTROL: u32 = 20; pub const KVM_EXIT_WATCHDOG: u32 = 21; pub const KVM_EXIT_S390_TSCH: u32 = 22; pub const KVM_EXIT_EPR: u32 = 23; pub const KVM_EXIT_SYSTEM_EVENT: u32 = 24; pub const KVM_EXIT_S390_STSI: u32 = 25; pub const KVM_EXIT_IOAPIC_EOI: u32 = 26; pub const KVM_EXIT_HYPERV: u32 = 27; pub const KVM_EXIT_ARM_NISV: u32 = 28; pub const KVM_EXIT_X86_RDMSR: u32 = 29; pub const KVM_EXIT_X86_WRMSR: u32 = 30; pub const KVM_EXIT_DIRTY_RING_FULL: u32 = 31; pub const KVM_EXIT_AP_RESET_HOLD: u32 = 32; pub const KVM_EXIT_X86_BUS_LOCK: u32 = 33; pub const KVM_EXIT_XEN: u32 = 34; pub const KVM_EXIT_RISCV_SBI: u32 = 35; pub const KVM_EXIT_RISCV_CSR: u32 = 36; pub const KVM_EXIT_NOTIFY: u32 = 37; pub const KVM_EXIT_LOONGARCH_IOCSR: u32 = 38; pub const KVM_EXIT_MEMORY_FAULT: u32 = 39; pub const KVM_INTERNAL_ERROR_EMULATION: u32 = 1; pub const KVM_INTERNAL_ERROR_SIMUL_EX: u32 = 2; pub const KVM_INTERNAL_ERROR_DELIVERY_EV: u32 = 3; pub const KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON: u32 = 4; pub const KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES: u32 = 1; pub const KVM_EXIT_IO_IN: u32 = 0; pub const KVM_EXIT_IO_OUT: u32 = 1; pub const KVM_SYSTEM_EVENT_SHUTDOWN: u32 = 1; pub const KVM_SYSTEM_EVENT_RESET: u32 = 2; pub const KVM_SYSTEM_EVENT_CRASH: u32 = 3; pub const KVM_SYSTEM_EVENT_WAKEUP: u32 = 4; pub const KVM_SYSTEM_EVENT_SUSPEND: u32 = 5; pub const KVM_SYSTEM_EVENT_SEV_TERM: u32 = 6; pub const KVM_MSR_EXIT_REASON_INVAL: u32 = 1; pub const KVM_MSR_EXIT_REASON_UNKNOWN: u32 = 2; pub const KVM_MSR_EXIT_REASON_FILTER: u32 = 4; pub const KVM_MSR_EXIT_REASON_VALID_MASK: u32 = 7; pub const KVM_NOTIFY_CONTEXT_INVALID: u32 = 1; pub const KVM_MEMORY_EXIT_FLAG_PRIVATE: u32 = 8; pub const SYNC_REGS_SIZE_BYTES: u32 = 2048; pub const KVM_MP_STATE_RUNNABLE: u32 = 0; pub const KVM_MP_STATE_UNINITIALIZED: u32 = 1; pub const KVM_MP_STATE_INIT_RECEIVED: u32 = 2; pub const KVM_MP_STATE_HALTED: u32 = 3; pub const KVM_MP_STATE_SIPI_RECEIVED: u32 = 4; pub const KVM_MP_STATE_STOPPED: u32 = 5; pub const KVM_MP_STATE_CHECK_STOP: u32 = 6; pub const KVM_MP_STATE_OPERATING: u32 = 7; pub const KVM_MP_STATE_LOAD: u32 = 8; pub const KVM_MP_STATE_AP_RESET_HOLD: u32 = 9; pub const KVM_MP_STATE_SUSPENDED: u32 = 10; pub const KVM_GUESTDBG_ENABLE: u32 = 1; pub const KVM_GUESTDBG_SINGLESTEP: u32 = 2; pub const KVM_X86_DISABLE_EXITS_MWAIT: u32 = 1; pub const KVM_X86_DISABLE_EXITS_HLT: u32 = 2; pub const KVM_X86_DISABLE_EXITS_PAUSE: u32 = 4; pub const KVM_X86_DISABLE_EXITS_CSTATE: u32 = 8; pub const KVM_X86_DISABLE_VALID_EXITS: u32 = 15; pub const KVMIO: u32 = 174; pub const KVM_VM_S390_UCONTROL: u32 = 1; pub const KVM_VM_PPC_HV: u32 = 1; pub const KVM_VM_PPC_PR: u32 = 2; pub const KVM_VM_MIPS_AUTO: u32 = 0; pub const KVM_VM_MIPS_VZ: u32 = 1; pub const KVM_VM_MIPS_TE: u32 = 2; pub const KVM_S390_SIE_PAGE_OFFSET: u32 = 1; pub const KVM_VM_TYPE_ARM_IPA_SIZE_MASK: u32 = 255; pub const KVM_CAP_IRQCHIP: u32 = 0; pub const KVM_CAP_HLT: u32 = 1; pub const KVM_CAP_MMU_SHADOW_CACHE_CONTROL: u32 = 2; pub const KVM_CAP_USER_MEMORY: u32 = 3; pub const KVM_CAP_SET_TSS_ADDR: u32 = 4; pub const KVM_CAP_VAPIC: u32 = 6; pub const KVM_CAP_EXT_CPUID: u32 = 7; pub const KVM_CAP_CLOCKSOURCE: u32 = 8; pub const KVM_CAP_NR_VCPUS: u32 = 9; pub const KVM_CAP_NR_MEMSLOTS: u32 = 10; pub const KVM_CAP_PIT: u32 = 11; pub const KVM_CAP_NOP_IO_DELAY: u32 = 12; pub const KVM_CAP_PV_MMU: u32 = 13; pub const KVM_CAP_MP_STATE: u32 = 14; pub const KVM_CAP_COALESCED_MMIO: u32 = 15; pub const KVM_CAP_SYNC_MMU: u32 = 16; pub const KVM_CAP_IOMMU: u32 = 18; pub const KVM_CAP_DESTROY_MEMORY_REGION_WORKS: u32 = 21; pub const KVM_CAP_USER_NMI: u32 = 22; pub const KVM_CAP_SET_GUEST_DEBUG: u32 = 23; pub const KVM_CAP_IRQ_ROUTING: u32 = 25; pub const KVM_CAP_IRQ_INJECT_STATUS: u32 = 26; pub const KVM_CAP_ASSIGN_DEV_IRQ: u32 = 29; pub const KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: u32 = 30; pub const KVM_CAP_IRQFD: u32 = 32; pub const KVM_CAP_SET_BOOT_CPU_ID: u32 = 34; pub const KVM_CAP_IOEVENTFD: u32 = 36; pub const KVM_CAP_SET_IDENTITY_MAP_ADDR: u32 = 37; pub const KVM_CAP_ADJUST_CLOCK: u32 = 39; pub const KVM_CAP_INTERNAL_ERROR_DATA: u32 = 40; pub const KVM_CAP_S390_PSW: u32 = 42; pub const KVM_CAP_PPC_SEGSTATE: u32 = 43; pub const KVM_CAP_HYPERV: u32 = 44; pub const KVM_CAP_HYPERV_VAPIC: u32 = 45; pub const KVM_CAP_HYPERV_SPIN: u32 = 46; pub const KVM_CAP_PCI_SEGMENT: u32 = 47; pub const KVM_CAP_PPC_PAIRED_SINGLES: u32 = 48; pub const KVM_CAP_INTR_SHADOW: u32 = 49; pub const KVM_CAP_X86_ROBUST_SINGLESTEP: u32 = 51; pub const KVM_CAP_PPC_OSI: u32 = 52; pub const KVM_CAP_PPC_UNSET_IRQ: u32 = 53; pub const KVM_CAP_ENABLE_CAP: u32 = 54; pub const KVM_CAP_PPC_GET_PVINFO: u32 = 57; pub const KVM_CAP_PPC_IRQ_LEVEL: u32 = 58; pub const KVM_CAP_ASYNC_PF: u32 = 59; pub const KVM_CAP_TSC_CONTROL: u32 = 60; pub const KVM_CAP_GET_TSC_KHZ: u32 = 61; pub const KVM_CAP_PPC_BOOKE_SREGS: u32 = 62; pub const KVM_CAP_SPAPR_TCE: u32 = 63; pub const KVM_CAP_PPC_SMT: u32 = 64; pub const KVM_CAP_PPC_RMA: u32 = 65; pub const KVM_CAP_MAX_VCPUS: u32 = 66; pub const KVM_CAP_PPC_HIOR: u32 = 67; pub const KVM_CAP_PPC_PAPR: u32 = 68; pub const KVM_CAP_SW_TLB: u32 = 69; pub const KVM_CAP_ONE_REG: u32 = 70; pub const KVM_CAP_S390_GMAP: u32 = 71; pub const KVM_CAP_TSC_DEADLINE_TIMER: u32 = 72; pub const KVM_CAP_S390_UCONTROL: u32 = 73; pub const KVM_CAP_SYNC_REGS: u32 = 74; pub const KVM_CAP_PCI_2_3: u32 = 75; pub const KVM_CAP_KVMCLOCK_CTRL: u32 = 76; pub const KVM_CAP_SIGNAL_MSI: u32 = 77; pub const KVM_CAP_PPC_GET_SMMU_INFO: u32 = 78; pub const KVM_CAP_S390_COW: u32 = 79; pub const KVM_CAP_PPC_ALLOC_HTAB: u32 = 80; pub const KVM_CAP_READONLY_MEM: u32 = 81; pub const KVM_CAP_IRQFD_RESAMPLE: u32 = 82; pub const KVM_CAP_PPC_BOOKE_WATCHDOG: u32 = 83; pub const KVM_CAP_PPC_HTAB_FD: u32 = 84; pub const KVM_CAP_S390_CSS_SUPPORT: u32 = 85; pub const KVM_CAP_PPC_EPR: u32 = 86; pub const KVM_CAP_ARM_PSCI: u32 = 87; pub const KVM_CAP_ARM_SET_DEVICE_ADDR: u32 = 88; pub const KVM_CAP_DEVICE_CTRL: u32 = 89; pub const KVM_CAP_IRQ_MPIC: u32 = 90; pub const KVM_CAP_PPC_RTAS: u32 = 91; pub const KVM_CAP_IRQ_XICS: u32 = 92; pub const KVM_CAP_ARM_EL1_32BIT: u32 = 93; pub const KVM_CAP_SPAPR_MULTITCE: u32 = 94; pub const KVM_CAP_EXT_EMUL_CPUID: u32 = 95; pub const KVM_CAP_HYPERV_TIME: u32 = 96; pub const KVM_CAP_IOAPIC_POLARITY_IGNORED: u32 = 97; pub const KVM_CAP_ENABLE_CAP_VM: u32 = 98; pub const KVM_CAP_S390_IRQCHIP: u32 = 99; pub const KVM_CAP_IOEVENTFD_NO_LENGTH: u32 = 100; pub const KVM_CAP_VM_ATTRIBUTES: u32 = 101; pub const KVM_CAP_ARM_PSCI_0_2: u32 = 102; pub const KVM_CAP_PPC_FIXUP_HCALL: u32 = 103; pub const KVM_CAP_PPC_ENABLE_HCALL: u32 = 104; pub const KVM_CAP_CHECK_EXTENSION_VM: u32 = 105; pub const KVM_CAP_S390_USER_SIGP: u32 = 106; pub const KVM_CAP_S390_VECTOR_REGISTERS: u32 = 107; pub const KVM_CAP_S390_MEM_OP: u32 = 108; pub const KVM_CAP_S390_USER_STSI: u32 = 109; pub const KVM_CAP_S390_SKEYS: u32 = 110; pub const KVM_CAP_MIPS_FPU: u32 = 111; pub const KVM_CAP_MIPS_MSA: u32 = 112; pub const KVM_CAP_S390_INJECT_IRQ: u32 = 113; pub const KVM_CAP_S390_IRQ_STATE: u32 = 114; pub const KVM_CAP_PPC_HWRNG: u32 = 115; pub const KVM_CAP_DISABLE_QUIRKS: u32 = 116; pub const KVM_CAP_X86_SMM: u32 = 117; pub const KVM_CAP_MULTI_ADDRESS_SPACE: u32 = 118; pub const KVM_CAP_GUEST_DEBUG_HW_BPS: u32 = 119; pub const KVM_CAP_GUEST_DEBUG_HW_WPS: u32 = 120; pub const KVM_CAP_SPLIT_IRQCHIP: u32 = 121; pub const KVM_CAP_IOEVENTFD_ANY_LENGTH: u32 = 122; pub const KVM_CAP_HYPERV_SYNIC: u32 = 123; pub const KVM_CAP_S390_RI: u32 = 124; pub const KVM_CAP_SPAPR_TCE_64: u32 = 125; pub const KVM_CAP_ARM_PMU_V3: u32 = 126; pub const KVM_CAP_VCPU_ATTRIBUTES: u32 = 127; pub const KVM_CAP_MAX_VCPU_ID: u32 = 128; pub const KVM_CAP_X2APIC_API: u32 = 129; pub const KVM_CAP_S390_USER_INSTR0: u32 = 130; pub const KVM_CAP_MSI_DEVID: u32 = 131; pub const KVM_CAP_PPC_HTM: u32 = 132; pub const KVM_CAP_SPAPR_RESIZE_HPT: u32 = 133; pub const KVM_CAP_PPC_MMU_RADIX: u32 = 134; pub const KVM_CAP_PPC_MMU_HASH_V3: u32 = 135; pub const KVM_CAP_IMMEDIATE_EXIT: u32 = 136; pub const KVM_CAP_MIPS_VZ: u32 = 137; pub const KVM_CAP_MIPS_TE: u32 = 138; pub const KVM_CAP_MIPS_64BIT: u32 = 139; pub const KVM_CAP_S390_GS: u32 = 140; pub const KVM_CAP_S390_AIS: u32 = 141; pub const KVM_CAP_SPAPR_TCE_VFIO: u32 = 142; pub const KVM_CAP_X86_DISABLE_EXITS: u32 = 143; pub const KVM_CAP_ARM_USER_IRQ: u32 = 144; pub const KVM_CAP_S390_CMMA_MIGRATION: u32 = 145; pub const KVM_CAP_PPC_FWNMI: u32 = 146; pub const KVM_CAP_PPC_SMT_POSSIBLE: u32 = 147; pub const KVM_CAP_HYPERV_SYNIC2: u32 = 148; pub const KVM_CAP_HYPERV_VP_INDEX: u32 = 149; pub const KVM_CAP_S390_AIS_MIGRATION: u32 = 150; pub const KVM_CAP_PPC_GET_CPU_CHAR: u32 = 151; pub const KVM_CAP_S390_BPB: u32 = 152; pub const KVM_CAP_GET_MSR_FEATURES: u32 = 153; pub const KVM_CAP_HYPERV_EVENTFD: u32 = 154; pub const KVM_CAP_HYPERV_TLBFLUSH: u32 = 155; pub const KVM_CAP_S390_HPAGE_1M: u32 = 156; pub const KVM_CAP_NESTED_STATE: u32 = 157; pub const KVM_CAP_ARM_INJECT_SERROR_ESR: u32 = 158; pub const KVM_CAP_MSR_PLATFORM_INFO: u32 = 159; pub const KVM_CAP_PPC_NESTED_HV: u32 = 160; pub const KVM_CAP_HYPERV_SEND_IPI: u32 = 161; pub const KVM_CAP_COALESCED_PIO: u32 = 162; pub const KVM_CAP_HYPERV_ENLIGHTENED_VMCS: u32 = 163; pub const KVM_CAP_EXCEPTION_PAYLOAD: u32 = 164; pub const KVM_CAP_ARM_VM_IPA_SIZE: u32 = 165; pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: u32 = 166; pub const KVM_CAP_HYPERV_CPUID: u32 = 167; pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2: u32 = 168; pub const KVM_CAP_PPC_IRQ_XIVE: u32 = 169; pub const KVM_CAP_ARM_SVE: u32 = 170; pub const KVM_CAP_ARM_PTRAUTH_ADDRESS: u32 = 171; pub const KVM_CAP_ARM_PTRAUTH_GENERIC: u32 = 172; pub const KVM_CAP_PMU_EVENT_FILTER: u32 = 173; pub const KVM_CAP_ARM_IRQ_LINE_LAYOUT_2: u32 = 174; pub const KVM_CAP_HYPERV_DIRECT_TLBFLUSH: u32 = 175; pub const KVM_CAP_PPC_GUEST_DEBUG_SSTEP: u32 = 176; pub const KVM_CAP_ARM_NISV_TO_USER: u32 = 177; pub const KVM_CAP_ARM_INJECT_EXT_DABT: u32 = 178; pub const KVM_CAP_S390_VCPU_RESETS: u32 = 179; pub const KVM_CAP_S390_PROTECTED: u32 = 180; pub const KVM_CAP_PPC_SECURE_GUEST: u32 = 181; pub const KVM_CAP_HALT_POLL: u32 = 182; pub const KVM_CAP_ASYNC_PF_INT: u32 = 183; pub const KVM_CAP_LAST_CPU: u32 = 184; pub const KVM_CAP_SMALLER_MAXPHYADDR: u32 = 185; pub const KVM_CAP_S390_DIAG318: u32 = 186; pub const KVM_CAP_STEAL_TIME: u32 = 187; pub const KVM_CAP_X86_USER_SPACE_MSR: u32 = 188; pub const KVM_CAP_X86_MSR_FILTER: u32 = 189; pub const KVM_CAP_ENFORCE_PV_FEATURE_CPUID: u32 = 190; pub const KVM_CAP_SYS_HYPERV_CPUID: u32 = 191; pub const KVM_CAP_DIRTY_LOG_RING: u32 = 192; pub const KVM_CAP_X86_BUS_LOCK_EXIT: u32 = 193; pub const KVM_CAP_PPC_DAWR1: u32 = 194; pub const KVM_CAP_SET_GUEST_DEBUG2: u32 = 195; pub const KVM_CAP_SGX_ATTRIBUTE: u32 = 196; pub const KVM_CAP_VM_COPY_ENC_CONTEXT_FROM: u32 = 197; pub const KVM_CAP_PTP_KVM: u32 = 198; pub const KVM_CAP_HYPERV_ENFORCE_CPUID: u32 = 199; pub const KVM_CAP_SREGS2: u32 = 200; pub const KVM_CAP_EXIT_HYPERCALL: u32 = 201; pub const KVM_CAP_PPC_RPT_INVALIDATE: u32 = 202; pub const KVM_CAP_BINARY_STATS_FD: u32 = 203; pub const KVM_CAP_EXIT_ON_EMULATION_FAILURE: u32 = 204; pub const KVM_CAP_ARM_MTE: u32 = 205; pub const KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM: u32 = 206; pub const KVM_CAP_VM_GPA_BITS: u32 = 207; pub const KVM_CAP_XSAVE2: u32 = 208; pub const KVM_CAP_SYS_ATTRIBUTES: u32 = 209; pub const KVM_CAP_PPC_AIL_MODE_3: u32 = 210; pub const KVM_CAP_S390_MEM_OP_EXTENSION: u32 = 211; pub const KVM_CAP_PMU_CAPABILITY: u32 = 212; pub const KVM_CAP_DISABLE_QUIRKS2: u32 = 213; pub const KVM_CAP_VM_TSC_CONTROL: u32 = 214; pub const KVM_CAP_SYSTEM_EVENT_DATA: u32 = 215; pub const KVM_CAP_ARM_SYSTEM_SUSPEND: u32 = 216; pub const KVM_CAP_S390_PROTECTED_DUMP: u32 = 217; pub const KVM_CAP_X86_TRIPLE_FAULT_EVENT: u32 = 218; pub const KVM_CAP_X86_NOTIFY_VMEXIT: u32 = 219; pub const KVM_CAP_VM_DISABLE_NX_HUGE_PAGES: u32 = 220; pub const KVM_CAP_S390_ZPCI_OP: u32 = 221; pub const KVM_CAP_S390_CPU_TOPOLOGY: u32 = 222; pub const KVM_CAP_DIRTY_LOG_RING_ACQ_REL: u32 = 223; pub const KVM_CAP_S390_PROTECTED_ASYNC_DISABLE: u32 = 224; pub const KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP: u32 = 225; pub const KVM_CAP_PMU_EVENT_MASKED_EVENTS: u32 = 226; pub const KVM_CAP_COUNTER_OFFSET: u32 = 227; pub const KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE: u32 = 228; pub const KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES: u32 = 229; pub const KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES: u32 = 230; pub const KVM_CAP_USER_MEMORY2: u32 = 231; pub const KVM_CAP_MEMORY_FAULT_INFO: u32 = 232; pub const KVM_CAP_MEMORY_ATTRIBUTES: u32 = 233; pub const KVM_CAP_GUEST_MEMFD: u32 = 234; pub const KVM_CAP_VM_TYPES: u32 = 235; pub const KVM_IRQ_ROUTING_IRQCHIP: u32 = 1; pub const KVM_IRQ_ROUTING_MSI: u32 = 2; pub const KVM_IRQ_ROUTING_S390_ADAPTER: u32 = 3; pub const KVM_IRQ_ROUTING_HV_SINT: u32 = 4; pub const KVM_IRQ_ROUTING_XEN_EVTCHN: u32 = 5; pub const KVM_IRQFD_FLAG_DEASSIGN: u32 = 1; pub const KVM_IRQFD_FLAG_RESAMPLE: u32 = 2; pub const KVM_CLOCK_TSC_STABLE: u32 = 2; pub const KVM_CLOCK_REALTIME: u32 = 4; pub const KVM_CLOCK_HOST_TSC: u32 = 8; pub const KVM_MMU_FSL_BOOKE_NOHV: u32 = 0; pub const KVM_MMU_FSL_BOOKE_HV: u32 = 1; pub const KVM_REG_ARCH_MASK: i64 = -72057594037927936; pub const KVM_REG_GENERIC: u32 = 0; pub const KVM_REG_PPC: u64 = 1152921504606846976; pub const KVM_REG_X86: u64 = 2305843009213693952; pub const KVM_REG_IA64: u64 = 3458764513820540928; pub const KVM_REG_ARM: u64 = 4611686018427387904; pub const KVM_REG_S390: u64 = 5764607523034234880; pub const KVM_REG_ARM64: u64 = 6917529027641081856; pub const KVM_REG_MIPS: u64 = 8070450532247928832; pub const KVM_REG_RISCV: i64 = -9223372036854775808; pub const KVM_REG_LOONGARCH: i64 = -8070450532247928832; pub const KVM_REG_SIZE_SHIFT: u32 = 52; pub const KVM_REG_SIZE_MASK: u64 = 67553994410557440; pub const KVM_REG_SIZE_U8: u32 = 0; pub const KVM_REG_SIZE_U16: u64 = 4503599627370496; pub const KVM_REG_SIZE_U32: u64 = 9007199254740992; pub const KVM_REG_SIZE_U64: u64 = 13510798882111488; pub const KVM_REG_SIZE_U128: u64 = 18014398509481984; pub const KVM_REG_SIZE_U256: u64 = 22517998136852480; pub const KVM_REG_SIZE_U512: u64 = 27021597764222976; pub const KVM_REG_SIZE_U1024: u64 = 31525197391593472; pub const KVM_REG_SIZE_U2048: u64 = 36028797018963968; pub const KVM_MSI_VALID_DEVID: u32 = 1; pub const KVM_CREATE_DEVICE_TEST: u32 = 1; pub const KVM_DEV_VFIO_FILE: u32 = 1; pub const KVM_DEV_VFIO_FILE_ADD: u32 = 1; pub const KVM_DEV_VFIO_FILE_DEL: u32 = 2; pub const KVM_DEV_VFIO_GROUP: u32 = 1; pub const KVM_DEV_VFIO_GROUP_ADD: u32 = 1; pub const KVM_DEV_VFIO_GROUP_DEL: u32 = 2; pub const KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: u32 = 3; pub const KVM_S390_STORE_STATUS_NOADDR: i32 = -1; pub const KVM_S390_STORE_STATUS_PREFIXED: i32 = -2; pub const KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE: u32 = 1; pub const KVM_DIRTY_LOG_INITIALLY_SET: u32 = 2; pub const KVM_DIRTY_LOG_PAGE_OFFSET: u32 = 0; pub const KVM_DIRTY_GFN_F_MASK: u32 = 3; pub const KVM_BUS_LOCK_DETECTION_OFF: u32 = 1; pub const KVM_BUS_LOCK_DETECTION_EXIT: u32 = 2; pub const KVM_PMU_CAP_DISABLE: u32 = 1; pub const KVM_STATS_TYPE_SHIFT: u32 = 0; pub const KVM_STATS_TYPE_MASK: u32 = 15; pub const KVM_STATS_TYPE_CUMULATIVE: u32 = 0; pub const KVM_STATS_TYPE_INSTANT: u32 = 1; pub const KVM_STATS_TYPE_PEAK: u32 = 2; pub const KVM_STATS_TYPE_LINEAR_HIST: u32 = 3; pub const KVM_STATS_TYPE_LOG_HIST: u32 = 4; pub const KVM_STATS_TYPE_MAX: u32 = 4; pub const KVM_STATS_UNIT_SHIFT: u32 = 4; pub const KVM_STATS_UNIT_MASK: u32 = 240; pub const KVM_STATS_UNIT_NONE: u32 = 0; pub const KVM_STATS_UNIT_BYTES: u32 = 16; pub const KVM_STATS_UNIT_SECONDS: u32 = 32; pub const KVM_STATS_UNIT_CYCLES: u32 = 48; pub const KVM_STATS_UNIT_BOOLEAN: u32 = 64; pub const KVM_STATS_UNIT_MAX: u32 = 64; pub const KVM_STATS_BASE_SHIFT: u32 = 8; pub const KVM_STATS_BASE_MASK: u32 = 3840; pub const KVM_STATS_BASE_POW10: u32 = 0; pub const KVM_STATS_BASE_POW2: u32 = 256; pub const KVM_STATS_BASE_MAX: u32 = 256; pub const KVM_X86_NOTIFY_VMEXIT_ENABLED: u32 = 1; pub const KVM_X86_NOTIFY_VMEXIT_USER: u32 = 2; pub const KVM_MEMORY_ATTRIBUTE_PRIVATE: u32 = 8; pub type __s8 = ::std::os::raw::c_schar; pub type __u8 = ::std::os::raw::c_uchar; pub type __s16 = ::std::os::raw::c_short; pub type __u16 = ::std::os::raw::c_ushort; pub type __s32 = ::std::os::raw::c_int; pub type __u32 = ::std::os::raw::c_uint; pub type __s64 = ::std::os::raw::c_longlong; pub type __u64 = ::std::os::raw::c_ulonglong; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __kernel_fd_set { pub fds_bits: [::std::os::raw::c_ulong; 16usize], } #[test] fn bindgen_test_layout___kernel_fd_set() { const UNINIT: ::std::mem::MaybeUninit<__kernel_fd_set> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__kernel_fd_set>(), 128usize, concat!("Size of: ", stringify!(__kernel_fd_set)) ); assert_eq!( ::std::mem::align_of::<__kernel_fd_set>(), 8usize, concat!("Alignment of ", stringify!(__kernel_fd_set)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fds_bits) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__kernel_fd_set), "::", stringify!(fds_bits) ) ); } pub type __kernel_sighandler_t = ::std::option::Option; pub type __kernel_key_t = ::std::os::raw::c_int; pub type __kernel_mqd_t = ::std::os::raw::c_int; pub type __kernel_long_t = ::std::os::raw::c_long; pub type __kernel_ulong_t = ::std::os::raw::c_ulong; pub type __kernel_ino_t = __kernel_ulong_t; pub type __kernel_mode_t = ::std::os::raw::c_uint; pub type __kernel_pid_t = ::std::os::raw::c_int; pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; pub type __kernel_uid_t = ::std::os::raw::c_uint; pub type __kernel_gid_t = ::std::os::raw::c_uint; pub type __kernel_suseconds_t = __kernel_long_t; pub type __kernel_daddr_t = ::std::os::raw::c_int; pub type __kernel_uid32_t = ::std::os::raw::c_uint; pub type __kernel_gid32_t = ::std::os::raw::c_uint; pub type __kernel_old_uid_t = __kernel_uid_t; pub type __kernel_old_gid_t = __kernel_gid_t; pub type __kernel_old_dev_t = ::std::os::raw::c_uint; pub type __kernel_size_t = __kernel_ulong_t; pub type __kernel_ssize_t = __kernel_long_t; pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __kernel_fsid_t { pub val: [::std::os::raw::c_int; 2usize], } #[test] fn bindgen_test_layout___kernel_fsid_t() { const UNINIT: ::std::mem::MaybeUninit<__kernel_fsid_t> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__kernel_fsid_t>(), 8usize, concat!("Size of: ", stringify!(__kernel_fsid_t)) ); assert_eq!( ::std::mem::align_of::<__kernel_fsid_t>(), 4usize, concat!("Alignment of ", stringify!(__kernel_fsid_t)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).val) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__kernel_fsid_t), "::", stringify!(val) ) ); } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; pub type __kernel_timer_t = ::std::os::raw::c_int; pub type __kernel_clockid_t = ::std::os::raw::c_int; pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; pub type __kernel_uid16_t = ::std::os::raw::c_ushort; pub type __kernel_gid16_t = ::std::os::raw::c_ushort; pub type __s128 = i128; pub type __u128 = u128; pub type __le16 = __u16; pub type __be16 = __u16; pub type __le32 = __u32; pub type __be32 = __u32; pub type __le64 = __u64; pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct user_regs_struct { pub pc: ::std::os::raw::c_ulong, pub ra: ::std::os::raw::c_ulong, pub sp: ::std::os::raw::c_ulong, pub gp: ::std::os::raw::c_ulong, pub tp: ::std::os::raw::c_ulong, pub t0: ::std::os::raw::c_ulong, pub t1: ::std::os::raw::c_ulong, pub t2: ::std::os::raw::c_ulong, pub s0: ::std::os::raw::c_ulong, pub s1: ::std::os::raw::c_ulong, pub a0: ::std::os::raw::c_ulong, pub a1: ::std::os::raw::c_ulong, pub a2: ::std::os::raw::c_ulong, pub a3: ::std::os::raw::c_ulong, pub a4: ::std::os::raw::c_ulong, pub a5: ::std::os::raw::c_ulong, pub a6: ::std::os::raw::c_ulong, pub a7: ::std::os::raw::c_ulong, pub s2: ::std::os::raw::c_ulong, pub s3: ::std::os::raw::c_ulong, pub s4: ::std::os::raw::c_ulong, pub s5: ::std::os::raw::c_ulong, pub s6: ::std::os::raw::c_ulong, pub s7: ::std::os::raw::c_ulong, pub s8: ::std::os::raw::c_ulong, pub s9: ::std::os::raw::c_ulong, pub s10: ::std::os::raw::c_ulong, pub s11: ::std::os::raw::c_ulong, pub t3: ::std::os::raw::c_ulong, pub t4: ::std::os::raw::c_ulong, pub t5: ::std::os::raw::c_ulong, pub t6: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_user_regs_struct() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 256usize, concat!("Size of: ", stringify!(user_regs_struct)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(user_regs_struct)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pc) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(pc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ra) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(ra) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sp) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(sp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gp) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(gp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tp) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(tp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).t0) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(t0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).t1) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(t1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).t2) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(t2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s0) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s1) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a0) as usize - ptr as usize }, 80usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a1) as usize - ptr as usize }, 88usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a2) as usize - ptr as usize }, 96usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a3) as usize - ptr as usize }, 104usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a4) as usize - ptr as usize }, 112usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a5) as usize - ptr as usize }, 120usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a5) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a6) as usize - ptr as usize }, 128usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a6) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).a7) as usize - ptr as usize }, 136usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(a7) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s2) as usize - ptr as usize }, 144usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s3) as usize - ptr as usize }, 152usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s4) as usize - ptr as usize }, 160usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s5) as usize - ptr as usize }, 168usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s5) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s6) as usize - ptr as usize }, 176usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s6) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s7) as usize - ptr as usize }, 184usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s7) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s8) as usize - ptr as usize }, 192usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s9) as usize - ptr as usize }, 200usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s9) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s10) as usize - ptr as usize }, 208usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s10) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s11) as usize - ptr as usize }, 216usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(s11) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).t3) as usize - ptr as usize }, 224usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(t3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).t4) as usize - ptr as usize }, 232usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(t4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).t5) as usize - ptr as usize }, 240usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(t5) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).t6) as usize - ptr as usize }, 248usize, concat!( "Offset of field: ", stringify!(user_regs_struct), "::", stringify!(t6) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __riscv_f_ext_state { pub f: [__u32; 32usize], pub fcsr: __u32, } #[test] fn bindgen_test_layout___riscv_f_ext_state() { const UNINIT: ::std::mem::MaybeUninit<__riscv_f_ext_state> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_f_ext_state>(), 132usize, concat!("Size of: ", stringify!(__riscv_f_ext_state)) ); assert_eq!( ::std::mem::align_of::<__riscv_f_ext_state>(), 4usize, concat!("Alignment of ", stringify!(__riscv_f_ext_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).f) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_f_ext_state), "::", stringify!(f) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fcsr) as usize - ptr as usize }, 128usize, concat!( "Offset of field: ", stringify!(__riscv_f_ext_state), "::", stringify!(fcsr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __riscv_d_ext_state { pub f: [__u64; 32usize], pub fcsr: __u32, } #[test] fn bindgen_test_layout___riscv_d_ext_state() { const UNINIT: ::std::mem::MaybeUninit<__riscv_d_ext_state> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_d_ext_state>(), 264usize, concat!("Size of: ", stringify!(__riscv_d_ext_state)) ); assert_eq!( ::std::mem::align_of::<__riscv_d_ext_state>(), 8usize, concat!("Alignment of ", stringify!(__riscv_d_ext_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).f) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_d_ext_state), "::", stringify!(f) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fcsr) as usize - ptr as usize }, 256usize, concat!( "Offset of field: ", stringify!(__riscv_d_ext_state), "::", stringify!(fcsr) ) ); } #[repr(C)] #[repr(align(16))] #[derive(Debug, Copy, Clone, PartialEq)] pub struct __riscv_q_ext_state { pub f: [__u64; 64usize], pub fcsr: __u32, pub reserved: [__u32; 3usize], } #[test] fn bindgen_test_layout___riscv_q_ext_state() { const UNINIT: ::std::mem::MaybeUninit<__riscv_q_ext_state> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_q_ext_state>(), 528usize, concat!("Size of: ", stringify!(__riscv_q_ext_state)) ); assert_eq!( ::std::mem::align_of::<__riscv_q_ext_state>(), 16usize, concat!("Alignment of ", stringify!(__riscv_q_ext_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).f) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_q_ext_state), "::", stringify!(f) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fcsr) as usize - ptr as usize }, 512usize, concat!( "Offset of field: ", stringify!(__riscv_q_ext_state), "::", stringify!(fcsr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 516usize, concat!( "Offset of field: ", stringify!(__riscv_q_ext_state), "::", stringify!(reserved) ) ); } impl Default for __riscv_q_ext_state { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __riscv_ctx_hdr { pub magic: __u32, pub size: __u32, } #[test] fn bindgen_test_layout___riscv_ctx_hdr() { const UNINIT: ::std::mem::MaybeUninit<__riscv_ctx_hdr> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_ctx_hdr>(), 8usize, concat!("Size of: ", stringify!(__riscv_ctx_hdr)) ); assert_eq!( ::std::mem::align_of::<__riscv_ctx_hdr>(), 4usize, concat!("Alignment of ", stringify!(__riscv_ctx_hdr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).magic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_ctx_hdr), "::", stringify!(magic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(__riscv_ctx_hdr), "::", stringify!(size) ) ); } #[repr(C)] #[repr(align(16))] #[derive(Debug, Copy, Clone, PartialEq)] pub struct __riscv_extra_ext_header { pub __padding: [__u32; 129usize], pub reserved: __u32, pub hdr: __riscv_ctx_hdr, } #[test] fn bindgen_test_layout___riscv_extra_ext_header() { const UNINIT: ::std::mem::MaybeUninit<__riscv_extra_ext_header> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_extra_ext_header>(), 528usize, concat!("Size of: ", stringify!(__riscv_extra_ext_header)) ); assert_eq!( ::std::mem::align_of::<__riscv_extra_ext_header>(), 16usize, concat!("Alignment of ", stringify!(__riscv_extra_ext_header)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).__padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_extra_ext_header), "::", stringify!(__padding) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 516usize, concat!( "Offset of field: ", stringify!(__riscv_extra_ext_header), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr) as usize - ptr as usize }, 520usize, concat!( "Offset of field: ", stringify!(__riscv_extra_ext_header), "::", stringify!(hdr) ) ); } impl Default for __riscv_extra_ext_header { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[repr(align(16))] #[derive(Copy, Clone)] pub union __riscv_fp_state { pub f: __riscv_f_ext_state, pub d: __riscv_d_ext_state, pub q: __riscv_q_ext_state, } #[test] fn bindgen_test_layout___riscv_fp_state() { const UNINIT: ::std::mem::MaybeUninit<__riscv_fp_state> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_fp_state>(), 528usize, concat!("Size of: ", stringify!(__riscv_fp_state)) ); assert_eq!( ::std::mem::align_of::<__riscv_fp_state>(), 16usize, concat!("Alignment of ", stringify!(__riscv_fp_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).f) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_fp_state), "::", stringify!(f) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).d) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_fp_state), "::", stringify!(d) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).q) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_fp_state), "::", stringify!(q) ) ); } impl Default for __riscv_fp_state { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for __riscv_fp_state { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "__riscv_fp_state {{ union }}") } } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct __riscv_v_ext_state { pub vstart: ::std::os::raw::c_ulong, pub vl: ::std::os::raw::c_ulong, pub vtype: ::std::os::raw::c_ulong, pub vcsr: ::std::os::raw::c_ulong, pub vlenb: ::std::os::raw::c_ulong, pub datap: *mut ::std::os::raw::c_void, } #[test] fn bindgen_test_layout___riscv_v_ext_state() { const UNINIT: ::std::mem::MaybeUninit<__riscv_v_ext_state> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_v_ext_state>(), 48usize, concat!("Size of: ", stringify!(__riscv_v_ext_state)) ); assert_eq!( ::std::mem::align_of::<__riscv_v_ext_state>(), 8usize, concat!("Alignment of ", stringify!(__riscv_v_ext_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vstart) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_v_ext_state), "::", stringify!(vstart) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vl) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(__riscv_v_ext_state), "::", stringify!(vl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vtype) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(__riscv_v_ext_state), "::", stringify!(vtype) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcsr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(__riscv_v_ext_state), "::", stringify!(vcsr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vlenb) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(__riscv_v_ext_state), "::", stringify!(vlenb) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).datap) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(__riscv_v_ext_state), "::", stringify!(datap) ) ); } impl Default for __riscv_v_ext_state { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default)] pub struct __riscv_v_regset_state { pub vstart: ::std::os::raw::c_ulong, pub vl: ::std::os::raw::c_ulong, pub vtype: ::std::os::raw::c_ulong, pub vcsr: ::std::os::raw::c_ulong, pub vlenb: ::std::os::raw::c_ulong, pub vreg: __IncompleteArrayField<::std::os::raw::c_char>, } #[test] fn bindgen_test_layout___riscv_v_regset_state() { const UNINIT: ::std::mem::MaybeUninit<__riscv_v_regset_state> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__riscv_v_regset_state>(), 40usize, concat!("Size of: ", stringify!(__riscv_v_regset_state)) ); assert_eq!( ::std::mem::align_of::<__riscv_v_regset_state>(), 8usize, concat!("Alignment of ", stringify!(__riscv_v_regset_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vstart) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__riscv_v_regset_state), "::", stringify!(vstart) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vl) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(__riscv_v_regset_state), "::", stringify!(vl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vtype) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(__riscv_v_regset_state), "::", stringify!(vtype) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcsr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(__riscv_v_regset_state), "::", stringify!(vcsr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vlenb) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(__riscv_v_regset_state), "::", stringify!(vlenb) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vreg) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(__riscv_v_regset_state), "::", stringify!(vreg) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_regs {} #[test] fn bindgen_test_layout_kvm_regs() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_regs)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_regs)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_fpu {} #[test] fn bindgen_test_layout_kvm_fpu() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_fpu)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_fpu)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_debug_exit_arch {} #[test] fn bindgen_test_layout_kvm_debug_exit_arch() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_debug_exit_arch)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_debug_exit_arch)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_guest_debug_arch {} #[test] fn bindgen_test_layout_kvm_guest_debug_arch() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_guest_debug_arch)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_guest_debug_arch)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sync_regs {} #[test] fn bindgen_test_layout_kvm_sync_regs() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_sync_regs)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_sync_regs)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sregs {} #[test] fn bindgen_test_layout_kvm_sregs() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_sregs)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_sregs)) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_riscv_config { pub isa: ::std::os::raw::c_ulong, pub zicbom_block_size: ::std::os::raw::c_ulong, pub mvendorid: ::std::os::raw::c_ulong, pub marchid: ::std::os::raw::c_ulong, pub mimpid: ::std::os::raw::c_ulong, pub zicboz_block_size: ::std::os::raw::c_ulong, pub satp_mode: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_riscv_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 56usize, concat!("Size of: ", stringify!(kvm_riscv_config)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_riscv_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).isa) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_riscv_config), "::", stringify!(isa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).zicbom_block_size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_riscv_config), "::", stringify!(zicbom_block_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mvendorid) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_riscv_config), "::", stringify!(mvendorid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).marchid) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_riscv_config), "::", stringify!(marchid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mimpid) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_riscv_config), "::", stringify!(mimpid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).zicboz_block_size) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_riscv_config), "::", stringify!(zicboz_block_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).satp_mode) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_riscv_config), "::", stringify!(satp_mode) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_riscv_core { pub regs: user_regs_struct, pub mode: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_riscv_core() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 264usize, concat!("Size of: ", stringify!(kvm_riscv_core)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_riscv_core)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_riscv_core), "::", stringify!(regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize }, 256usize, concat!( "Offset of field: ", stringify!(kvm_riscv_core), "::", stringify!(mode) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_riscv_csr { pub sstatus: ::std::os::raw::c_ulong, pub sie: ::std::os::raw::c_ulong, pub stvec: ::std::os::raw::c_ulong, pub sscratch: ::std::os::raw::c_ulong, pub sepc: ::std::os::raw::c_ulong, pub scause: ::std::os::raw::c_ulong, pub stval: ::std::os::raw::c_ulong, pub sip: ::std::os::raw::c_ulong, pub satp: ::std::os::raw::c_ulong, pub scounteren: ::std::os::raw::c_ulong, pub senvcfg: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_riscv_csr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 88usize, concat!("Size of: ", stringify!(kvm_riscv_csr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_riscv_csr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sstatus) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(sstatus) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sie) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(sie) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).stvec) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(stvec) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sscratch) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(sscratch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sepc) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(sepc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).scause) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(scause) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).stval) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(stval) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sip) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(sip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).satp) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(satp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).scounteren) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(scounteren) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).senvcfg) as usize - ptr as usize }, 80usize, concat!( "Offset of field: ", stringify!(kvm_riscv_csr), "::", stringify!(senvcfg) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_riscv_aia_csr { pub siselect: ::std::os::raw::c_ulong, pub iprio1: ::std::os::raw::c_ulong, pub iprio2: ::std::os::raw::c_ulong, pub sieh: ::std::os::raw::c_ulong, pub siph: ::std::os::raw::c_ulong, pub iprio1h: ::std::os::raw::c_ulong, pub iprio2h: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_riscv_aia_csr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 56usize, concat!("Size of: ", stringify!(kvm_riscv_aia_csr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_riscv_aia_csr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).siselect) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_riscv_aia_csr), "::", stringify!(siselect) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).iprio1) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_riscv_aia_csr), "::", stringify!(iprio1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).iprio2) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_riscv_aia_csr), "::", stringify!(iprio2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sieh) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_riscv_aia_csr), "::", stringify!(sieh) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).siph) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_riscv_aia_csr), "::", stringify!(siph) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).iprio1h) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_riscv_aia_csr), "::", stringify!(iprio1h) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).iprio2h) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_riscv_aia_csr), "::", stringify!(iprio2h) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_riscv_smstateen_csr { pub sstateen0: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_riscv_smstateen_csr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_riscv_smstateen_csr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_riscv_smstateen_csr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sstateen0) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_riscv_smstateen_csr), "::", stringify!(sstateen0) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_riscv_timer { pub frequency: __u64, pub time: __u64, pub compare: __u64, pub state: __u64, } #[test] fn bindgen_test_layout_kvm_riscv_timer() { 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!(kvm_riscv_timer)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_riscv_timer)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).frequency) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_riscv_timer), "::", stringify!(frequency) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).time) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_riscv_timer), "::", stringify!(time) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).compare) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_riscv_timer), "::", stringify!(compare) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_riscv_timer), "::", stringify!(state) ) ); } pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_A: KVM_RISCV_ISA_EXT_ID = 0; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_C: KVM_RISCV_ISA_EXT_ID = 1; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_D: KVM_RISCV_ISA_EXT_ID = 2; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_F: KVM_RISCV_ISA_EXT_ID = 3; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_H: KVM_RISCV_ISA_EXT_ID = 4; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_I: KVM_RISCV_ISA_EXT_ID = 5; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_M: KVM_RISCV_ISA_EXT_ID = 6; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_SVPBMT: KVM_RISCV_ISA_EXT_ID = 7; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_SSTC: KVM_RISCV_ISA_EXT_ID = 8; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_SVINVAL: KVM_RISCV_ISA_EXT_ID = 9; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZIHINTPAUSE: KVM_RISCV_ISA_EXT_ID = 10; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZICBOM: KVM_RISCV_ISA_EXT_ID = 11; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZICBOZ: KVM_RISCV_ISA_EXT_ID = 12; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZBB: KVM_RISCV_ISA_EXT_ID = 13; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_SSAIA: KVM_RISCV_ISA_EXT_ID = 14; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_V: KVM_RISCV_ISA_EXT_ID = 15; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_SVNAPOT: KVM_RISCV_ISA_EXT_ID = 16; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZBA: KVM_RISCV_ISA_EXT_ID = 17; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZBS: KVM_RISCV_ISA_EXT_ID = 18; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZICNTR: KVM_RISCV_ISA_EXT_ID = 19; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZICSR: KVM_RISCV_ISA_EXT_ID = 20; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZIFENCEI: KVM_RISCV_ISA_EXT_ID = 21; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZIHPM: KVM_RISCV_ISA_EXT_ID = 22; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_SMSTATEEN: KVM_RISCV_ISA_EXT_ID = 23; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZICOND: KVM_RISCV_ISA_EXT_ID = 24; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZBC: KVM_RISCV_ISA_EXT_ID = 25; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZBKB: KVM_RISCV_ISA_EXT_ID = 26; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZBKC: KVM_RISCV_ISA_EXT_ID = 27; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZBKX: KVM_RISCV_ISA_EXT_ID = 28; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZKND: KVM_RISCV_ISA_EXT_ID = 29; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZKNE: KVM_RISCV_ISA_EXT_ID = 30; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZKNH: KVM_RISCV_ISA_EXT_ID = 31; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZKR: KVM_RISCV_ISA_EXT_ID = 32; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZKSED: KVM_RISCV_ISA_EXT_ID = 33; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZKSH: KVM_RISCV_ISA_EXT_ID = 34; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZKT: KVM_RISCV_ISA_EXT_ID = 35; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVBB: KVM_RISCV_ISA_EXT_ID = 36; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVBC: KVM_RISCV_ISA_EXT_ID = 37; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKB: KVM_RISCV_ISA_EXT_ID = 38; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKG: KVM_RISCV_ISA_EXT_ID = 39; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKNED: KVM_RISCV_ISA_EXT_ID = 40; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKNHA: KVM_RISCV_ISA_EXT_ID = 41; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKNHB: KVM_RISCV_ISA_EXT_ID = 42; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKSED: KVM_RISCV_ISA_EXT_ID = 43; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKSH: KVM_RISCV_ISA_EXT_ID = 44; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVKT: KVM_RISCV_ISA_EXT_ID = 45; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZFH: KVM_RISCV_ISA_EXT_ID = 46; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZFHMIN: KVM_RISCV_ISA_EXT_ID = 47; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZIHINTNTL: KVM_RISCV_ISA_EXT_ID = 48; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVFH: KVM_RISCV_ISA_EXT_ID = 49; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZVFHMIN: KVM_RISCV_ISA_EXT_ID = 50; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZFA: KVM_RISCV_ISA_EXT_ID = 51; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZTSO: KVM_RISCV_ISA_EXT_ID = 52; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_ZACAS: KVM_RISCV_ISA_EXT_ID = 53; pub const KVM_RISCV_ISA_EXT_ID_KVM_RISCV_ISA_EXT_MAX: KVM_RISCV_ISA_EXT_ID = 54; pub type KVM_RISCV_ISA_EXT_ID = ::std::os::raw::c_uint; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_V01: KVM_RISCV_SBI_EXT_ID = 0; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_TIME: KVM_RISCV_SBI_EXT_ID = 1; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_IPI: KVM_RISCV_SBI_EXT_ID = 2; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_RFENCE: KVM_RISCV_SBI_EXT_ID = 3; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_SRST: KVM_RISCV_SBI_EXT_ID = 4; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_HSM: KVM_RISCV_SBI_EXT_ID = 5; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_PMU: KVM_RISCV_SBI_EXT_ID = 6; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_EXPERIMENTAL: KVM_RISCV_SBI_EXT_ID = 7; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_VENDOR: KVM_RISCV_SBI_EXT_ID = 8; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_DBCN: KVM_RISCV_SBI_EXT_ID = 9; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_STA: KVM_RISCV_SBI_EXT_ID = 10; pub const KVM_RISCV_SBI_EXT_ID_KVM_RISCV_SBI_EXT_MAX: KVM_RISCV_SBI_EXT_ID = 11; pub type KVM_RISCV_SBI_EXT_ID = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_riscv_sbi_sta { pub shmem_lo: ::std::os::raw::c_ulong, pub shmem_hi: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_riscv_sbi_sta() { 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!(kvm_riscv_sbi_sta)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_riscv_sbi_sta)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).shmem_lo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_riscv_sbi_sta), "::", stringify!(shmem_lo) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).shmem_hi) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_riscv_sbi_sta), "::", stringify!(shmem_hi) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_userspace_memory_region { pub slot: __u32, pub flags: __u32, pub guest_phys_addr: __u64, pub memory_size: __u64, pub userspace_addr: __u64, } #[test] fn bindgen_test_layout_kvm_userspace_memory_region() { 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!(kvm_userspace_memory_region)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_userspace_memory_region)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_phys_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(guest_phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(memory_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).userspace_addr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(userspace_addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_userspace_memory_region2 { pub slot: __u32, pub flags: __u32, pub guest_phys_addr: __u64, pub memory_size: __u64, pub userspace_addr: __u64, pub guest_memfd_offset: __u64, pub guest_memfd: __u32, pub pad1: __u32, pub pad2: [__u64; 14usize], } #[test] fn bindgen_test_layout_kvm_userspace_memory_region2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 160usize, concat!("Size of: ", stringify!(kvm_userspace_memory_region2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_userspace_memory_region2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_phys_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(memory_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).userspace_addr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(userspace_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_memfd_offset) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_memfd_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_memfd) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_memfd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 44usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_level { pub __bindgen_anon_1: kvm_irq_level__bindgen_ty_1, pub level: __u32, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_level__bindgen_ty_1 { pub irq: __u32, pub status: __s32, } #[test] fn bindgen_test_layout_kvm_irq_level__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!(kvm_irq_level__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_level__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_level__bindgen_ty_1), "::", stringify!(irq) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_level__bindgen_ty_1), "::", stringify!(status) ) ); } impl Default for kvm_irq_level__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() } } } impl ::std::fmt::Debug for kvm_irq_level__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_level__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_level() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_level)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_level)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).level) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_level), "::", stringify!(level) ) ); } impl Default for kvm_irq_level { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_level { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_level {{ __bindgen_anon_1: {:?}, level: {:?} }}", self.__bindgen_anon_1, self.level ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irqchip { pub chip_id: __u32, pub pad: __u32, pub chip: kvm_irqchip__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irqchip__bindgen_ty_1 { pub dummy: [::std::os::raw::c_char; 512usize], } #[test] fn bindgen_test_layout_kvm_irqchip__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 512usize, concat!("Size of: ", stringify!(kvm_irqchip__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_irqchip__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dummy) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip__bindgen_ty_1), "::", stringify!(dummy) ) ); } impl Default for kvm_irqchip__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() } } } impl ::std::fmt::Debug for kvm_irqchip__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irqchip__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irqchip() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 520usize, concat!("Size of: ", stringify!(kvm_irqchip)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irqchip)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).chip_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(chip_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).chip) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(chip) ) ); } impl Default for kvm_irqchip { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irqchip { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irqchip {{ chip_id: {:?}, pad: {:?}, chip: {:?} }}", self.chip_id, self.pad, self.chip ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_pit_config { pub flags: __u32, pub pad: [__u32; 15usize], } #[test] fn bindgen_test_layout_kvm_pit_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_pit_config)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_pit_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pit_config), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_pit_config), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_hyperv_exit { pub type_: __u32, pub pad1: __u32, pub u: kvm_hyperv_exit__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_hyperv_exit__bindgen_ty_1 { pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1, pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2, pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 { pub msr: __u32, pub pad2: __u32, pub control: __u64, pub evt_page: __u64, pub msg_page: __u64, } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 32usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(pad2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).evt_page) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(evt_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msg_page) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(msg_page) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 { pub input: __u64, pub result: __u64, pub params: [__u64; 2usize], } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 32usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).input) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(input) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(result) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(params) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 { pub msr: __u32, pub pad2: __u32, pub control: __u64, pub status: __u64, pub send_page: __u64, pub recv_page: __u64, pub pending_page: __u64, } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 48usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(pad2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(status) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).send_page) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(send_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).recv_page) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(recv_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pending_page) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(pending_page) ) ); } #[test] fn bindgen_test_layout_kvm_hyperv_exit__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).synic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(synic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(hcall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).syndbg) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(syndbg) ) ); } impl Default for kvm_hyperv_exit__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() } } } impl ::std::fmt::Debug for kvm_hyperv_exit__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_hyperv_exit__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_hyperv_exit() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 56usize, concat!("Size of: ", stringify!(kvm_hyperv_exit)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_hyperv_exit)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(u) ) ); } impl Default for kvm_hyperv_exit { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_hyperv_exit { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_hyperv_exit {{ type: {:?}, pad1: {:?}, u: {:?} }}", self.type_, self.pad1, self.u ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_xen_exit { pub type_: __u32, pub u: kvm_xen_exit__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_xen_exit__bindgen_ty_1 { pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 { pub longmode: __u32, pub cpl: __u32, pub input: __u64, pub result: __u64, pub params: [__u64; 6usize], } #[test] fn bindgen_test_layout_kvm_xen_exit__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::(), 72usize, concat!( "Size of: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).longmode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(longmode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cpl) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(cpl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).input) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(input) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(result) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(params) ) ); } #[test] fn bindgen_test_layout_kvm_xen_exit__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_xen_exit__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_exit__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1), "::", stringify!(hcall) ) ); } impl Default for kvm_xen_exit__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() } } } impl ::std::fmt::Debug for kvm_xen_exit__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_xen_exit__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_xen_exit() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 80usize, concat!("Size of: ", stringify!(kvm_xen_exit)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_exit)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit), "::", stringify!(u) ) ); } impl Default for kvm_xen_exit { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_xen_exit { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_xen_exit {{ type: {:?}, u: {:?} }}", self.type_, self.u ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run { pub request_interrupt_window: __u8, pub immediate_exit: __u8, pub padding1: [__u8; 6usize], pub exit_reason: __u32, pub ready_for_interrupt_injection: __u8, pub if_flag: __u8, pub flags: __u16, pub cr8: __u64, pub apic_base: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1, pub kvm_valid_regs: __u64, pub kvm_dirty_regs: __u64, pub s: kvm_run__bindgen_ty_2, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1 { pub hw: kvm_run__bindgen_ty_1__bindgen_ty_1, pub fail_entry: kvm_run__bindgen_ty_1__bindgen_ty_2, pub ex: kvm_run__bindgen_ty_1__bindgen_ty_3, pub io: kvm_run__bindgen_ty_1__bindgen_ty_4, pub debug: kvm_run__bindgen_ty_1__bindgen_ty_5, pub mmio: kvm_run__bindgen_ty_1__bindgen_ty_6, pub iocsr_io: kvm_run__bindgen_ty_1__bindgen_ty_7, pub hypercall: kvm_run__bindgen_ty_1__bindgen_ty_8, pub tpr_access: kvm_run__bindgen_ty_1__bindgen_ty_9, pub s390_sieic: kvm_run__bindgen_ty_1__bindgen_ty_10, pub s390_reset_flags: __u64, pub s390_ucontrol: kvm_run__bindgen_ty_1__bindgen_ty_11, pub dcr: kvm_run__bindgen_ty_1__bindgen_ty_12, pub internal: kvm_run__bindgen_ty_1__bindgen_ty_13, pub emulation_failure: kvm_run__bindgen_ty_1__bindgen_ty_14, pub osi: kvm_run__bindgen_ty_1__bindgen_ty_15, pub papr_hcall: kvm_run__bindgen_ty_1__bindgen_ty_16, pub s390_tsch: kvm_run__bindgen_ty_1__bindgen_ty_17, pub epr: kvm_run__bindgen_ty_1__bindgen_ty_18, pub system_event: kvm_run__bindgen_ty_1__bindgen_ty_19, pub s390_stsi: kvm_run__bindgen_ty_1__bindgen_ty_20, pub eoi: kvm_run__bindgen_ty_1__bindgen_ty_21, pub hyperv: kvm_hyperv_exit, pub arm_nisv: kvm_run__bindgen_ty_1__bindgen_ty_22, pub msr: kvm_run__bindgen_ty_1__bindgen_ty_23, pub xen: kvm_xen_exit, pub riscv_sbi: kvm_run__bindgen_ty_1__bindgen_ty_24, pub riscv_csr: kvm_run__bindgen_ty_1__bindgen_ty_25, pub notify: kvm_run__bindgen_ty_1__bindgen_ty_26, pub memory_fault: kvm_run__bindgen_ty_1__bindgen_ty_27, pub padding: [::std::os::raw::c_char; 256usize], } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 { pub hardware_exit_reason: __u64, } #[test] fn bindgen_test_layout_kvm_run__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::(), 8usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hardware_exit_reason) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1), "::", stringify!(hardware_exit_reason) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 { pub hardware_entry_failure_reason: __u64, pub cpu: __u32, } #[test] fn bindgen_test_layout_kvm_run__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::(), 16usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hardware_entry_failure_reason) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2), "::", stringify!(hardware_entry_failure_reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cpu) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2), "::", stringify!(cpu) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 { pub exception: __u32, pub error_code: __u32, } #[test] fn bindgen_test_layout_kvm_run__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::(), 8usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3), "::", stringify!(exception) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error_code) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3), "::", stringify!(error_code) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 { pub direction: __u8, pub size: __u8, pub port: __u16, pub count: __u32, pub data_offset: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_4() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_4)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(direction) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(count) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(data_offset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 { pub arch: kvm_debug_exit_arch, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_5() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_5)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_5) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_5), "::", stringify!(arch) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 { pub phys_addr: __u64, pub data: [__u8; 8usize], pub len: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_6() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_6)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 { pub phys_addr: __u64, pub data: [__u8; 8usize], pub len: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_7() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_7)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 { pub nr: __u64, pub args: [__u64; 6usize], pub ret: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 { pub longmode: __u32, pub flags: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).longmode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1), "::", stringify!(longmode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1), "::", stringify!(flags) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(ret) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_8 {{ nr: {:?}, args: {:?}, ret: {:?}, __bindgen_anon_1: {:?} }}" , self . nr , self . args , self . ret , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 { pub rip: __u64, pub is_write: __u32, pub pad: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_9() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_9)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(rip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(is_write) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 { pub icptcode: __u8, pub ipa: __u16, pub ipb: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_10() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).icptcode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(icptcode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipa) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(ipa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipb) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(ipb) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 { pub trans_exc_code: __u64, pub pgm_code: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_11() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_11) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_exc_code) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11), "::", stringify!(trans_exc_code) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pgm_code) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11), "::", stringify!(pgm_code) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 { pub dcrn: __u32, pub data: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_12() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dcrn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(dcrn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 { pub suberror: __u32, pub ndata: __u32, pub data: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_13() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 136usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).suberror) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(suberror) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(ndata) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 { pub suberror: __u32, pub ndata: __u32, pub flags: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 { pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 { pub insn_size: __u8, pub insn_bytes: [__u8; 15usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit< kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1, > = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).insn_size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1), "::", stringify!(insn_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).insn_bytes) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1), "::", stringify!(insn_bytes) ) ); } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1() { assert_eq!( ::std::mem::size_of::(), 16usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_14) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).suberror) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(suberror) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(ndata) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(flags) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_14 {{ suberror: {:?}, ndata: {:?}, flags: {:?}, __bindgen_anon_1: {:?} }}" , self . suberror , self . ndata , self . flags , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 { pub gprs: [__u64; 32usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_15() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 256usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gprs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15), "::", stringify!(gprs) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 { pub nr: __u64, pub ret: __u64, pub args: [__u64; 9usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_16() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 88usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(ret) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(args) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 { pub subchannel_id: __u16, pub subchannel_nr: __u16, pub io_int_parm: __u32, pub io_int_word: __u32, pub ipb: __u32, pub dequeued: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_17() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 20usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).subchannel_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(subchannel_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).subchannel_nr) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(subchannel_nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io_int_parm) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(io_int_parm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io_int_word) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(io_int_word) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipb) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(ipb) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dequeued) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(dequeued) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 { pub epr: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_18() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_18) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_18) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).epr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_18), "::", stringify!(epr) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 { pub type_: __u32, pub ndata: __u32, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 { pub flags: __u64, pub data: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 128usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1), "::", stringify!(data) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 136usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19), "::", stringify!(ndata) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_19 {{ type: {:?}, ndata: {:?}, __bindgen_anon_1: {:?} }}" , self . type_ , self . ndata , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 { pub addr: __u64, pub ar: __u8, pub reserved: __u8, pub fc: __u8, pub sel1: __u8, pub sel2: __u16, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_20() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_20) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ar) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(ar) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 9usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fc) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(fc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sel1) as usize - ptr as usize }, 11usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(sel1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sel2) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(sel2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 { pub vector: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_21() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 1usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vector) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21), "::", stringify!(vector) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 { pub esr_iss: __u64, pub fault_ipa: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_22() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_22) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).esr_iss) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22), "::", stringify!(esr_iss) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fault_ipa) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22), "::", stringify!(fault_ipa) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 { pub error: __u8, pub pad: [__u8; 7usize], pub reason: __u32, pub index: __u32, pub data: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_23() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_23) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(error) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reason) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(index) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 { pub extension_id: ::std::os::raw::c_ulong, pub function_id: ::std::os::raw::c_ulong, pub args: [::std::os::raw::c_ulong; 6usize], pub ret: [::std::os::raw::c_ulong; 2usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_24() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 80usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).extension_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(extension_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).function_id) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(function_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(ret) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 { pub csr_num: ::std::os::raw::c_ulong, pub new_value: ::std::os::raw::c_ulong, pub write_mask: ::std::os::raw::c_ulong, pub ret_value: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_25() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_25) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csr_num) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(csr_num) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).new_value) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(new_value) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).write_mask) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(write_mask) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret_value) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(ret_value) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_26 { pub flags: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_26() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_26) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_26) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_26), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_27 { pub flags: __u64, pub gpa: __u64, pub size: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_27() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_27) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gpa) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(gpa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(size) ) ); } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 256usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hw) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hw) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fail_entry) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(fail_entry) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ex) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(ex) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(io) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).debug) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(debug) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mmio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(mmio) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).iocsr_io) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(iocsr_io) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hypercall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hypercall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tpr_access) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(tpr_access) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_sieic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_sieic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_reset_flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_reset_flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_ucontrol) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_ucontrol) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dcr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(dcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).internal) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(internal) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).emulation_failure) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(emulation_failure) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).osi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(osi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).papr_hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(papr_hcall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_tsch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_tsch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).epr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(epr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).system_event) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(system_event) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_stsi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_stsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).eoi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(eoi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hyperv) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hyperv) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arm_nisv) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(arm_nisv) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xen) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(xen) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).riscv_sbi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(riscv_sbi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).riscv_csr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(riscv_csr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).notify) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(notify) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_fault) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(memory_fault) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(padding) ) ); } impl Default for kvm_run__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_run__bindgen_ty_1 {{ union }}") } } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_2 { pub regs: kvm_sync_regs, pub padding: [::std::os::raw::c_char; 2048usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2048usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_run__bindgen_ty_2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_2), "::", stringify!(regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_2), "::", stringify!(padding) ) ); } impl Default for kvm_run__bindgen_ty_2 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_2 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_run__bindgen_ty_2 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_run() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2352usize, concat!("Size of: ", stringify!(kvm_run)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).request_interrupt_window) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(request_interrupt_window) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).immediate_exit) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(immediate_exit) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding1) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(padding1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exit_reason) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(exit_reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ready_for_interrupt_injection) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(ready_for_interrupt_injection) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).if_flag) as usize - ptr as usize }, 13usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(if_flag) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr8) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(cr8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apic_base) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(apic_base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).kvm_valid_regs) as usize - ptr as usize }, 288usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(kvm_valid_regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).kvm_dirty_regs) as usize - ptr as usize }, 296usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(kvm_dirty_regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s) as usize - ptr as usize }, 304usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(s) ) ); } impl Default for kvm_run { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run {{ request_interrupt_window: {:?}, immediate_exit: {:?}, padding1: {:?}, exit_reason: {:?}, ready_for_interrupt_injection: {:?}, if_flag: {:?}, flags: {:?}, cr8: {:?}, apic_base: {:?}, __bindgen_anon_1: {:?}, kvm_valid_regs: {:?}, kvm_dirty_regs: {:?}, s: {:?} }}" , self . request_interrupt_window , self . immediate_exit , self . padding1 , self . exit_reason , self . ready_for_interrupt_injection , self . if_flag , self . flags , self . cr8 , self . apic_base , self . __bindgen_anon_1 , self . kvm_valid_regs , self . kvm_dirty_regs , self . s) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_coalesced_mmio_zone { pub addr: __u64, pub size: __u32, pub __bindgen_anon_1: kvm_coalesced_mmio_zone__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_coalesced_mmio_zone__bindgen_ty_1 { pub pad: __u32, pub pio: __u32, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_zone__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!(kvm_coalesced_mmio_zone__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1), "::", stringify!(pio) ) ); } impl Default for kvm_coalesced_mmio_zone__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() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_zone__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_coalesced_mmio_zone__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_zone() { 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!(kvm_coalesced_mmio_zone)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio_zone)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone), "::", stringify!(size) ) ); } impl Default for kvm_coalesced_mmio_zone { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_zone { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_coalesced_mmio_zone {{ addr: {:?}, size: {:?}, __bindgen_anon_1: {:?} }}", self.addr, self.size, self.__bindgen_anon_1 ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_coalesced_mmio { pub phys_addr: __u64, pub len: __u32, pub __bindgen_anon_1: kvm_coalesced_mmio__bindgen_ty_1, pub data: [__u8; 8usize], } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_coalesced_mmio__bindgen_ty_1 { pub pad: __u32, pub pio: __u32, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio__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!(kvm_coalesced_mmio__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_coalesced_mmio__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio__bindgen_ty_1), "::", stringify!(pio) ) ); } impl Default for kvm_coalesced_mmio__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() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_coalesced_mmio__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_coalesced_mmio() { 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!(kvm_coalesced_mmio)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(data) ) ); } impl Default for kvm_coalesced_mmio { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_coalesced_mmio {{ phys_addr: {:?}, len: {:?}, __bindgen_anon_1: {:?}, data: {:?} }}" , self . phys_addr , self . len , self . __bindgen_anon_1 , self . data) } } #[repr(C)] pub struct kvm_coalesced_mmio_ring { pub first: __u32, pub last: __u32, pub coalesced_mmio: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_ring() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_coalesced_mmio_ring)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio_ring)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).first) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(first) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).last) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(last) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).coalesced_mmio) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(coalesced_mmio) ) ); } impl Default for kvm_coalesced_mmio_ring { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_ring { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_coalesced_mmio_ring {{ first: {:?}, last: {:?}, coalesced_mmio: {:?} }}", self.first, self.last, self.coalesced_mmio ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_translation { pub linear_address: __u64, pub physical_address: __u64, pub valid: __u8, pub writeable: __u8, pub usermode: __u8, pub pad: [__u8; 5usize], } #[test] fn bindgen_test_layout_kvm_translation() { 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!(kvm_translation)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_translation)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).linear_address) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(linear_address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).physical_address) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(physical_address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).valid) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(valid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).writeable) as usize - ptr as usize }, 17usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(writeable) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).usermode) as usize - ptr as usize }, 18usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(usermode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 19usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_interrupt { pub irq: __u32, } #[test] fn bindgen_test_layout_kvm_interrupt() { 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!(kvm_interrupt)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_interrupt)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_interrupt), "::", stringify!(irq) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_dirty_log { pub slot: __u32, pub padding1: __u32, pub __bindgen_anon_1: kvm_dirty_log__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_dirty_log__bindgen_ty_1 { pub dirty_bitmap: *mut ::std::os::raw::c_void, pub padding2: __u64, } #[test] fn bindgen_test_layout_kvm_dirty_log__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_dirty_log__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_log__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dirty_bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log__bindgen_ty_1), "::", stringify!(dirty_bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding2) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log__bindgen_ty_1), "::", stringify!(padding2) ) ); } impl Default for kvm_dirty_log__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() } } } impl ::std::fmt::Debug for kvm_dirty_log__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_dirty_log__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_dirty_log() { 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!(kvm_dirty_log)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_log)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding1) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log), "::", stringify!(padding1) ) ); } impl Default for kvm_dirty_log { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_dirty_log { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_dirty_log {{ slot: {:?}, padding1: {:?}, __bindgen_anon_1: {:?} }}", self.slot, self.padding1, self.__bindgen_anon_1 ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_clear_dirty_log { pub slot: __u32, pub num_pages: __u32, pub first_page: __u64, pub __bindgen_anon_1: kvm_clear_dirty_log__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_clear_dirty_log__bindgen_ty_1 { pub dirty_bitmap: *mut ::std::os::raw::c_void, pub padding2: __u64, } #[test] fn bindgen_test_layout_kvm_clear_dirty_log__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_clear_dirty_log__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dirty_bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1), "::", stringify!(dirty_bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding2) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1), "::", stringify!(padding2) ) ); } impl Default for kvm_clear_dirty_log__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() } } } impl ::std::fmt::Debug for kvm_clear_dirty_log__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_clear_dirty_log__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_clear_dirty_log() { 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!(kvm_clear_dirty_log)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_clear_dirty_log)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_pages) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(num_pages) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).first_page) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(first_page) ) ); } impl Default for kvm_clear_dirty_log { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_clear_dirty_log { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_clear_dirty_log {{ slot: {:?}, num_pages: {:?}, first_page: {:?}, __bindgen_anon_1: {:?} }}" , self . slot , self . num_pages , self . first_page , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_signal_mask { pub len: __u32, pub sigset: __IncompleteArrayField<__u8>, } #[test] fn bindgen_test_layout_kvm_signal_mask() { 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!(kvm_signal_mask)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_signal_mask)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_signal_mask), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sigset) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_signal_mask), "::", stringify!(sigset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_tpr_access_ctl { pub enabled: __u32, pub flags: __u32, pub reserved: [__u32; 8usize], } #[test] fn bindgen_test_layout_kvm_tpr_access_ctl() { 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!(kvm_tpr_access_ctl)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_tpr_access_ctl)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).enabled) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(enabled) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vapic_addr { pub vapic_addr: __u64, } #[test] fn bindgen_test_layout_kvm_vapic_addr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_vapic_addr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_vapic_addr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vapic_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vapic_addr), "::", stringify!(vapic_addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_mp_state { pub mp_state: __u32, } #[test] fn bindgen_test_layout_kvm_mp_state() { 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!(kvm_mp_state)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_mp_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mp_state) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_mp_state), "::", stringify!(mp_state) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_guest_debug { pub control: __u32, pub pad: __u32, pub arch: kvm_guest_debug_arch, } #[test] fn bindgen_test_layout_kvm_guest_debug() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_guest_debug)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_guest_debug)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arch) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(arch) ) ); } pub const kvm_ioeventfd_flag_nr_datamatch: _bindgen_ty_1 = 0; pub const kvm_ioeventfd_flag_nr_pio: _bindgen_ty_1 = 1; pub const kvm_ioeventfd_flag_nr_deassign: _bindgen_ty_1 = 2; pub const kvm_ioeventfd_flag_nr_virtio_ccw_notify: _bindgen_ty_1 = 3; pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_1 = 4; pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_1 = 5; pub type _bindgen_ty_1 = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_ioeventfd { pub datamatch: __u64, pub addr: __u64, pub len: __u32, pub fd: __s32, pub flags: __u32, pub pad: [__u8; 36usize], } #[test] fn bindgen_test_layout_kvm_ioeventfd() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_ioeventfd)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_ioeventfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).datamatch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(datamatch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(pad) ) ); } impl Default for kvm_ioeventfd { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_enable_cap { pub cap: __u32, pub flags: __u32, pub args: [__u64; 4usize], pub pad: [__u8; 64usize], } #[test] fn bindgen_test_layout_kvm_enable_cap() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 104usize, concat!("Size of: ", stringify!(kvm_enable_cap)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_enable_cap)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(cap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(pad) ) ); } impl Default for kvm_enable_cap { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_irqchip { pub irqchip: __u32, pub pin: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_irqchip() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing_irqchip)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_irqchip)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irqchip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_irqchip), "::", stringify!(irqchip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pin) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_irqchip), "::", stringify!(pin) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_routing_msi { pub address_lo: __u32, pub address_hi: __u32, pub data: __u32, pub __bindgen_anon_1: kvm_irq_routing_msi__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_routing_msi__bindgen_ty_1 { pub pad: __u32, pub devid: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_msi__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!(kvm_irq_routing_msi__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_irq_routing_msi__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).devid) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi__bindgen_ty_1), "::", stringify!(devid) ) ); } impl Default for kvm_irq_routing_msi__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() } } } impl ::std::fmt::Debug for kvm_irq_routing_msi__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_routing_msi__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_routing_msi() { 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!(kvm_irq_routing_msi)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_msi)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_lo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(address_lo) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_hi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(address_hi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(data) ) ); } impl Default for kvm_irq_routing_msi { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing_msi { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_irq_routing_msi {{ address_lo: {:?}, address_hi: {:?}, data: {:?}, __bindgen_anon_1: {:?} }}" , self . address_lo , self . address_hi , self . data , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_s390_adapter { pub ind_addr: __u64, pub summary_addr: __u64, pub ind_offset: __u64, pub summary_offset: __u32, pub adapter_id: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_s390_adapter() { 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!(kvm_irq_routing_s390_adapter)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing_s390_adapter)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ind_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(ind_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).summary_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(summary_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ind_offset) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(ind_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).summary_offset) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(summary_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).adapter_id) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(adapter_id) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_hv_sint { pub vcpu: __u32, pub sint: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_hv_sint() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing_hv_sint)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_hv_sint)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_hv_sint), "::", stringify!(vcpu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sint) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_hv_sint), "::", stringify!(sint) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_xen_evtchn { pub port: __u32, pub vcpu: __u32, pub priority: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_xen_evtchn() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(kvm_irq_routing_xen_evtchn)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_xen_evtchn)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(vcpu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(priority) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_routing_entry { pub gsi: __u32, pub type_: __u32, pub flags: __u32, pub pad: __u32, pub u: kvm_irq_routing_entry__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_routing_entry__bindgen_ty_1 { pub irqchip: kvm_irq_routing_irqchip, pub msi: kvm_irq_routing_msi, pub adapter: kvm_irq_routing_s390_adapter, pub hv_sint: kvm_irq_routing_hv_sint, pub xen_evtchn: kvm_irq_routing_xen_evtchn, pub pad: [__u32; 8usize], } #[test] fn bindgen_test_layout_kvm_irq_routing_entry__bindgen_ty_1() { 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!(kvm_irq_routing_entry__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_irq_routing_entry__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irqchip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(irqchip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(msi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).adapter) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(adapter) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hv_sint) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(hv_sint) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xen_evtchn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(xen_evtchn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(pad) ) ); } impl Default for kvm_irq_routing_entry__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() } } } impl ::std::fmt::Debug for kvm_irq_routing_entry__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_routing_entry__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_routing_entry() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_irq_routing_entry)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing_entry)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gsi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(gsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(u) ) ); } impl Default for kvm_irq_routing_entry { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing_entry { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_routing_entry {{ gsi: {:?}, type: {:?}, flags: {:?}, pad: {:?}, u: {:?} }}", self.gsi, self.type_, self.flags, self.pad, self.u ) } } #[repr(C)] pub struct kvm_irq_routing { pub nr: __u32, pub flags: __u32, pub entries: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_irq_routing() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(entries) ) ); } impl Default for kvm_irq_routing { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_routing {{ nr: {:?}, flags: {:?}, entries: {:?} }}", self.nr, self.flags, self.entries ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irqfd { pub fd: __u32, pub gsi: __u32, pub flags: __u32, pub resamplefd: __u32, pub pad: [__u8; 16usize], } #[test] fn bindgen_test_layout_kvm_irqfd() { 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!(kvm_irqfd)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irqfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gsi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(gsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).resamplefd) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(resamplefd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_clock_data { pub clock: __u64, pub flags: __u32, pub pad0: __u32, pub realtime: __u64, pub host_tsc: __u64, pub pad: [__u32; 4usize], } #[test] fn bindgen_test_layout_kvm_clock_data() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_clock_data)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_clock_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).clock) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(clock) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).realtime) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(realtime) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).host_tsc) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(host_tsc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_config_tlb { pub params: __u64, pub array: __u64, pub mmu_type: __u32, pub array_len: __u32, } #[test] fn bindgen_test_layout_kvm_config_tlb() { 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!(kvm_config_tlb)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_config_tlb)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(params) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(array) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mmu_type) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(mmu_type) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).array_len) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(array_len) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_dirty_tlb { pub bitmap: __u64, pub num_dirty: __u32, } #[test] fn bindgen_test_layout_kvm_dirty_tlb() { 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!(kvm_dirty_tlb)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_tlb)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_tlb), "::", stringify!(bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_dirty) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_dirty_tlb), "::", stringify!(num_dirty) ) ); } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_reg_list { pub n: __u64, pub reg: __IncompleteArrayField<__u64>, } #[test] fn bindgen_test_layout_kvm_reg_list() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_reg_list)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_reg_list)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).n) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_reg_list), "::", stringify!(n) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reg) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_reg_list), "::", stringify!(reg) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_one_reg { pub id: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_one_reg() { 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!(kvm_one_reg)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_one_reg)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_one_reg), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_one_reg), "::", stringify!(addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_msi { pub address_lo: __u32, pub address_hi: __u32, pub data: __u32, pub flags: __u32, pub devid: __u32, pub pad: [__u8; 12usize], } #[test] fn bindgen_test_layout_kvm_msi() { 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!(kvm_msi)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_msi)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_lo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(address_lo) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_hi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(address_hi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).devid) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(devid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_arm_device_addr { pub id: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_arm_device_addr() { 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!(kvm_arm_device_addr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_arm_device_addr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_arm_device_addr), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_arm_device_addr), "::", stringify!(addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_create_device { pub type_: __u32, pub fd: __u32, pub flags: __u32, } #[test] fn bindgen_test_layout_kvm_create_device() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(kvm_create_device)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_create_device)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_device_attr { pub flags: __u32, pub group: __u32, pub attr: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_device_attr() { 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!(kvm_device_attr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_device_attr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).group) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(group) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).attr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(attr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(addr) ) ); } pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_20: kvm_device_type = 1; pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_42: kvm_device_type = 2; pub const kvm_device_type_KVM_DEV_TYPE_XICS: kvm_device_type = 3; pub const kvm_device_type_KVM_DEV_TYPE_VFIO: kvm_device_type = 4; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2: kvm_device_type = 5; pub const kvm_device_type_KVM_DEV_TYPE_FLIC: kvm_device_type = 6; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3: kvm_device_type = 7; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_ITS: kvm_device_type = 8; pub const kvm_device_type_KVM_DEV_TYPE_XIVE: kvm_device_type = 9; pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10; pub const kvm_device_type_KVM_DEV_TYPE_RISCV_AIA: kvm_device_type = 11; pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 12; pub type kvm_device_type = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vfio_spapr_tce { pub groupfd: __s32, pub tablefd: __s32, } #[test] fn bindgen_test_layout_kvm_vfio_spapr_tce() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_vfio_spapr_tce)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_vfio_spapr_tce)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).groupfd) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vfio_spapr_tce), "::", stringify!(groupfd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tablefd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_vfio_spapr_tce), "::", stringify!(tablefd) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_enc_region { pub addr: __u64, pub size: __u64, } #[test] fn bindgen_test_layout_kvm_enc_region() { 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!(kvm_enc_region)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_enc_region)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_enc_region), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_enc_region), "::", stringify!(size) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_dirty_gfn { pub flags: __u32, pub slot: __u32, pub offset: __u64, } #[test] fn bindgen_test_layout_kvm_dirty_gfn() { 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!(kvm_dirty_gfn)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_gfn)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(offset) ) ); } #[doc = " struct kvm_stats_header - Header of per vm/vcpu binary statistics data.\n @flags: Some extra information for header, always 0 for now.\n @name_size: The size in bytes of the memory which contains statistics\n name string including trailing '\\0'. The memory is allocated\n at the send of statistics descriptor.\n @num_desc: The number of statistics the vm or vcpu has.\n @id_offset: The offset of the vm/vcpu stats' id string in the file pointed\n by vm/vcpu stats fd.\n @desc_offset: The offset of the vm/vcpu stats' descriptor block in the file\n pointd by vm/vcpu stats fd.\n @data_offset: The offset of the vm/vcpu stats' data block in the file\n pointed by vm/vcpu stats fd.\n\n This is the header userspace needs to read from stats fd before any other\n readings. It is used by userspace to discover all the information about the\n vm/vcpu's binary statistics.\n Userspace reads this header from the start of the vm/vcpu's stats fd."] #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_stats_header { pub flags: __u32, pub name_size: __u32, pub num_desc: __u32, pub id_offset: __u32, pub desc_offset: __u32, pub data_offset: __u32, } #[test] fn bindgen_test_layout_kvm_stats_header() { 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!(kvm_stats_header)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_stats_header)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).name_size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(name_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_desc) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(num_desc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id_offset) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(id_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).desc_offset) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(desc_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(data_offset) ) ); } #[doc = " struct kvm_stats_desc - Descriptor of a KVM statistics.\n @flags: Annotations of the stats, like type, unit, etc.\n @exponent: Used together with @flags to determine the unit.\n @size: The number of data items for this stats.\n Every data item is of type __u64.\n @offset: The offset of the stats to the start of stat structure in\n structure kvm or kvm_vcpu.\n @bucket_size: A parameter value used for histogram stats. It is only used\n\t\tfor linear histogram stats, specifying the size of the bucket;\n @name: The name string for the stats. Its size is indicated by the\n &kvm_stats_header->name_size."] #[repr(C)] #[derive(Debug, Default)] pub struct kvm_stats_desc { pub flags: __u32, pub exponent: __s16, pub size: __u16, pub offset: __u32, pub bucket_size: __u32, pub name: __IncompleteArrayField<::std::os::raw::c_char>, } #[test] fn bindgen_test_layout_kvm_stats_desc() { 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!(kvm_stats_desc)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_stats_desc)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exponent) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(exponent) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bucket_size) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(bucket_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(name) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_memory_attributes { pub address: __u64, pub size: __u64, pub attributes: __u64, pub flags: __u64, } #[test] fn bindgen_test_layout_kvm_memory_attributes() { 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!(kvm_memory_attributes)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_memory_attributes)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).attributes) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(attributes) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_create_guest_memfd { pub size: __u64, pub flags: __u64, pub reserved: [__u64; 6usize], } #[test] fn bindgen_test_layout_kvm_create_guest_memfd() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_create_guest_memfd)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_create_guest_memfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(reserved) ) ); } kvm-bindings-0.10.0/src/riscv64/fam_wrappers.rs000064400000000000000000000032761046102023000174250ustar 00000000000000// Copyright 2024 © Institute of Software, CAS. All rights reserved. // Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 use vmm_sys_util::fam::{FamStruct, FamStructWrapper}; use riscv64::bindings::*; // There is no constant in the kernel as far as the maximum number // of registers on RISC-V, but KVM_GET_REG_LIST usually returns around 160. const RISCV64_REGS_MAX: usize = 200; // Implement the FamStruct trait for kvm_reg_list. generate_fam_struct_impl!(kvm_reg_list, u64, reg, u64, n, RISCV64_REGS_MAX); // Implement the PartialEq trait for kvm_reg_list. impl PartialEq for kvm_reg_list { fn eq(&self, other: &kvm_reg_list) -> bool { // No need to call entries's eq, FamStructWrapper's PartialEq will do it for you self.n == other.n } } /// Wrapper over the `kvm_reg_list` structure. /// /// The `kvm_reg_list` structure contains a flexible array member. For details check the /// [KVM API KVM_GET_REG_LIST](https://docs.kernel.org/virt/kvm/api.html#kvm-get-reg-list) /// documentation. To provide safe access to the array elements, this type is /// implemented using [FamStructWrapper](../vmm_sys_util/fam/struct.FamStructWrapper.html). pub type RegList = FamStructWrapper; #[cfg(test)] mod tests { use super::RegList; #[test] fn test_reg_list_eq() { let mut wrapper = RegList::new(1).unwrap(); assert_eq!(wrapper.as_slice().len(), 1); let mut wrapper2 = wrapper.clone(); assert!(wrapper == wrapper2); wrapper.as_mut_slice()[0] = 1; assert!(wrapper != wrapper2); wrapper2.as_mut_slice()[0] = 1; assert!(wrapper == wrapper2); } } kvm-bindings-0.10.0/src/riscv64/mod.rs000064400000000000000000000007131046102023000155070ustar 00000000000000// Copyright 2024 © Institute of Software, CAS. All rights reserved. // Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #[allow(clippy::all)] #[allow(clippy::undocumented_unsafe_blocks)] pub mod bindings; #[cfg(feature = "fam-wrappers")] pub mod fam_wrappers; #[cfg(feature = "serde")] mod serialize; pub use self::bindings::*; #[cfg(feature = "fam-wrappers")] pub use self::fam_wrappers::*; kvm-bindings-0.10.0/src/riscv64/serialize.rs000064400000000000000000000100151046102023000167130ustar 00000000000000// Copyright 2024 © Institute of Software, CAS. All rights reserved. // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 use bindings::{ kvm_mp_state, kvm_one_reg, kvm_riscv_aia_csr, kvm_riscv_config, kvm_riscv_core, kvm_riscv_csr, kvm_riscv_sbi_sta, kvm_riscv_smstateen_csr, kvm_riscv_timer, user_regs_struct, }; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use zerocopy::{transmute, AsBytes}; serde_impls! { kvm_mp_state, kvm_one_reg, kvm_riscv_config, kvm_riscv_core, user_regs_struct, kvm_riscv_csr, kvm_riscv_aia_csr, kvm_riscv_smstateen_csr, kvm_riscv_timer, kvm_riscv_sbi_sta } #[cfg(test)] mod tests { use bindings::*; use serde::{Deserialize, Serialize}; fn is_serde Deserialize<'de> + Default>() { let serialized = bincode::serialize(&T::default()).unwrap(); let deserialized = bincode::deserialize::(serialized.as_ref()).unwrap(); let serialized_again = bincode::serialize(&deserialized).unwrap(); // Compare the serialized state after a roundtrip, to work around issues with // bindings not implementing `PartialEq`. assert_eq!(serialized, serialized_again); } #[test] fn static_assert_serde_implementations() { // This test statically (= at compile-time) asserts that various bindgen generated // structures implement serde's `Serialize` and `Deserialize` traits. // This is to make sure that we do not accidentally remove those implementations // when regenerating bindings. If this test fails to compile, please add // // #[cfg_attr( // feature = "serde", // derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) // )] // // to all structures causing compilation errors (we need the zerocopy traits, as the // `Serialize` and `Deserialize` implementations are provided by the `serde_impls!` macro // above, which implements serialization based on zerocopy's `FromBytes` and `AsBytes` // traits that it expects to be derived). // // NOTE: This only include "top-level" items, and does not list out bindgen-anonymous types // (e.g. types like `kvm_vcpu_events__bindgen_ty_5`). These types can change name across // bindgen versions. If after re-adding the derives to all the below items you can compile // errors about anonymous types not implementing `Serialize`/`Deserialize`, please also add // the derives to all anonymous types references in the definitions of the below items. is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); } fn is_serde_json Deserialize<'de> + Default>() { let serialized = serde_json::to_string(&T::default()).unwrap(); let deserialized = serde_json::from_str::(serialized.as_ref()).unwrap(); let serialized_again = serde_json::to_string(&deserialized).unwrap(); // Compare the serialized state after a roundtrip, to work around issues with // bindings not implementing `PartialEq`. assert_eq!(serialized, serialized_again); } #[test] fn test_json_serde() { is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); } } kvm-bindings-0.10.0/src/serialize.rs000064400000000000000000000056111046102023000154210ustar 00000000000000// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 //! Module containing serialization utilities /// Macro that generates serde::Serialize and serde::Deserialize implementations for the given types. /// This macro assumes that the types implement zerocopy::FromBytes and zerocopy::AsBytes, and uses /// these implementations to serialize as opaque byte arrays. During deserialization, it will /// try to deserialize as a `Vec`. If this deserialized `Vec` has a length that equals `size_of::`, /// it will transmute to `T` (using zerocopy), otherwise the `Vec` will either be zero-padded, or truncated. /// This will hopefully allow live update of bindings across kernel versions even if the kernel adds /// new fields to the end of some struct (we heavily rely on the kernel not making ABI breaking changes here). macro_rules! serde_impls { ($($typ: ty),*) => { $( impl Serialize for $typ { fn serialize(&self, serializer: S) -> Result where S: Serializer { let bytes = self.as_bytes(); serializer.serialize_bytes(bytes) } } impl<'de> Deserialize<'de> for $typ { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de> { struct BytesVisitor; impl<'a> serde::de::Visitor<'a> for BytesVisitor { type Value = [u8; std::mem::size_of::<$typ>()]; fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { formatter.write_str("a byte array") } fn visit_bytes(self, bytes: &[u8]) -> Result { let mut backing = [0u8; std::mem::size_of::<$typ>()]; let limit = bytes.len().min(backing.len()); backing[..limit].copy_from_slice(&bytes[..limit]); Ok(backing) } fn visit_seq>(self, mut seq: A) -> Result { let mut backing = [0u8; std::mem::size_of::<$typ>()]; for backing_byte in &mut backing { let Some(byte) = seq.next_element()? else { break }; *backing_byte = byte; } Ok(backing) } } let backing = deserializer.deserialize_bytes(BytesVisitor)?; Ok(transmute!(backing)) } } )* } } kvm-bindings-0.10.0/src/x86_64/bindings.rs000064400000000000000000014122611046102023000161710ustar 00000000000000/* automatically generated by rust-bindgen 0.64.0 */ #[repr(transparent)] #[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct __BindgenBitfieldUnit { storage: Storage, } impl __BindgenBitfieldUnit { #[inline] pub const fn new(storage: Storage) -> Self { Self { storage } } } impl __BindgenBitfieldUnit where Storage: AsRef<[u8]> + AsMut<[u8]>, { #[inline] pub fn get_bit(&self, index: usize) -> bool { debug_assert!(index / 8 < self.storage.as_ref().len()); let byte_index = index / 8; let byte = self.storage.as_ref()[byte_index]; let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; let mask = 1 << bit_index; byte & mask == mask } #[inline] pub fn set_bit(&mut self, index: usize, val: bool) { debug_assert!(index / 8 < self.storage.as_ref().len()); let byte_index = index / 8; let byte = &mut self.storage.as_mut()[byte_index]; let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 }; let mask = 1 << bit_index; if val { *byte |= mask; } else { *byte &= !mask; } } #[inline] pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { debug_assert!(bit_width <= 64); debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); let mut val = 0; for i in 0..(bit_width as usize) { if self.get_bit(i + bit_offset) { let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; val |= 1 << index; } } val } #[inline] pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { debug_assert!(bit_width <= 64); debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); for i in 0..(bit_width as usize) { let mask = 1 << i; let val_bit_is_set = val & mask == mask; let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i }; self.set_bit(index + bit_offset, val_bit_is_set); } } } #[repr(transparent)] #[derive(Default)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); impl __IncompleteArrayField { #[inline] pub const fn new() -> Self { __IncompleteArrayField(::std::marker::PhantomData, []) } #[inline] pub fn as_ptr(&self) -> *const T { self as *const _ as *const T } #[inline] pub fn as_mut_ptr(&mut self) -> *mut T { self as *mut _ as *mut T } #[inline] pub unsafe fn as_slice(&self, len: usize) -> &[T] { ::std::slice::from_raw_parts(self.as_ptr(), len) } #[inline] pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) } } impl ::std::fmt::Debug for __IncompleteArrayField { fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { fmt.write_str("__IncompleteArrayField") } } #[repr(C)] pub struct __BindgenUnionField(::std::marker::PhantomData); impl __BindgenUnionField { #[inline] pub const fn new() -> Self { __BindgenUnionField(::std::marker::PhantomData) } #[inline] pub unsafe fn as_ref(&self) -> &T { ::std::mem::transmute(self) } #[inline] pub unsafe fn as_mut(&mut self) -> &mut T { ::std::mem::transmute(self) } } impl ::std::default::Default for __BindgenUnionField { #[inline] fn default() -> Self { Self::new() } } impl ::std::clone::Clone for __BindgenUnionField { #[inline] fn clone(&self) -> Self { Self::new() } } impl ::std::marker::Copy for __BindgenUnionField {} impl ::std::fmt::Debug for __BindgenUnionField { fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { fmt.write_str("__BindgenUnionField") } } impl ::std::hash::Hash for __BindgenUnionField { fn hash(&self, _state: &mut H) {} } impl ::std::cmp::PartialEq for __BindgenUnionField { fn eq(&self, _other: &__BindgenUnionField) -> bool { true } } impl ::std::cmp::Eq for __BindgenUnionField {} pub const __BITS_PER_LONG: u32 = 64; pub const __BITS_PER_LONG_LONG: u32 = 64; pub const __FD_SETSIZE: u32 = 1024; pub const _IOC_NRBITS: u32 = 8; pub const _IOC_TYPEBITS: u32 = 8; pub const _IOC_SIZEBITS: u32 = 14; pub const _IOC_DIRBITS: u32 = 2; pub const _IOC_NRMASK: u32 = 255; pub const _IOC_TYPEMASK: u32 = 255; pub const _IOC_SIZEMASK: u32 = 16383; pub const _IOC_DIRMASK: u32 = 3; pub const _IOC_NRSHIFT: u32 = 0; pub const _IOC_TYPESHIFT: u32 = 8; pub const _IOC_SIZESHIFT: u32 = 16; pub const _IOC_DIRSHIFT: u32 = 30; pub const _IOC_NONE: u32 = 0; pub const _IOC_WRITE: u32 = 1; pub const _IOC_READ: u32 = 2; pub const IOC_IN: u32 = 1073741824; pub const IOC_OUT: u32 = 2147483648; pub const IOC_INOUT: u32 = 3221225472; pub const IOCSIZE_MASK: u32 = 1073676288; pub const IOCSIZE_SHIFT: u32 = 16; pub const KVM_PIO_PAGE_OFFSET: u32 = 1; pub const KVM_COALESCED_MMIO_PAGE_OFFSET: u32 = 2; pub const KVM_DIRTY_LOG_PAGE_OFFSET: u32 = 64; pub const DE_VECTOR: u32 = 0; pub const DB_VECTOR: u32 = 1; pub const BP_VECTOR: u32 = 3; pub const OF_VECTOR: u32 = 4; pub const BR_VECTOR: u32 = 5; pub const UD_VECTOR: u32 = 6; pub const NM_VECTOR: u32 = 7; pub const DF_VECTOR: u32 = 8; pub const TS_VECTOR: u32 = 10; pub const NP_VECTOR: u32 = 11; pub const SS_VECTOR: u32 = 12; pub const GP_VECTOR: u32 = 13; pub const PF_VECTOR: u32 = 14; pub const MF_VECTOR: u32 = 16; pub const AC_VECTOR: u32 = 17; pub const MC_VECTOR: u32 = 18; pub const XM_VECTOR: u32 = 19; pub const VE_VECTOR: u32 = 20; pub const KVM_NR_INTERRUPTS: u32 = 256; pub const KVM_IOAPIC_NUM_PINS: u32 = 24; pub const KVM_IRQCHIP_PIC_MASTER: u32 = 0; pub const KVM_IRQCHIP_PIC_SLAVE: u32 = 1; pub const KVM_IRQCHIP_IOAPIC: u32 = 2; pub const KVM_NR_IRQCHIPS: u32 = 3; pub const KVM_RUN_X86_SMM: u32 = 1; pub const KVM_RUN_X86_BUS_LOCK: u32 = 2; pub const KVM_APIC_REG_SIZE: u32 = 1024; pub const KVM_SREGS2_FLAGS_PDPTRS_VALID: u32 = 1; pub const KVM_MSR_FILTER_MAX_BITMAP_SIZE: u32 = 1536; pub const KVM_MSR_FILTER_READ: u32 = 1; pub const KVM_MSR_FILTER_WRITE: u32 = 2; pub const KVM_MSR_FILTER_RANGE_VALID_MASK: u32 = 3; pub const KVM_MSR_FILTER_MAX_RANGES: u32 = 16; pub const KVM_MSR_FILTER_DEFAULT_ALLOW: u32 = 0; pub const KVM_MSR_FILTER_DEFAULT_DENY: u32 = 1; pub const KVM_MSR_FILTER_VALID_MASK: u32 = 1; pub const KVM_CPUID_FLAG_SIGNIFCANT_INDEX: u32 = 1; pub const KVM_CPUID_FLAG_STATEFUL_FUNC: u32 = 2; pub const KVM_CPUID_FLAG_STATE_READ_NEXT: u32 = 4; pub const KVM_GUESTDBG_USE_SW_BP: u32 = 65536; pub const KVM_GUESTDBG_USE_HW_BP: u32 = 131072; pub const KVM_GUESTDBG_INJECT_DB: u32 = 262144; pub const KVM_GUESTDBG_INJECT_BP: u32 = 524288; pub const KVM_GUESTDBG_BLOCKIRQ: u32 = 1048576; pub const KVM_PIT_FLAGS_HPET_LEGACY: u32 = 1; pub const KVM_PIT_FLAGS_SPEAKER_DATA_ON: u32 = 2; pub const KVM_VCPUEVENT_VALID_NMI_PENDING: u32 = 1; pub const KVM_VCPUEVENT_VALID_SIPI_VECTOR: u32 = 2; pub const KVM_VCPUEVENT_VALID_SHADOW: u32 = 4; pub const KVM_VCPUEVENT_VALID_SMM: u32 = 8; pub const KVM_VCPUEVENT_VALID_PAYLOAD: u32 = 16; pub const KVM_VCPUEVENT_VALID_TRIPLE_FAULT: u32 = 32; pub const KVM_X86_SHADOW_INT_MOV_SS: u32 = 1; pub const KVM_X86_SHADOW_INT_STI: u32 = 2; pub const KVM_MAX_XCRS: u32 = 16; pub const KVM_SYNC_X86_REGS: u32 = 1; pub const KVM_SYNC_X86_SREGS: u32 = 2; pub const KVM_SYNC_X86_EVENTS: u32 = 4; pub const KVM_SYNC_X86_VALID_FIELDS: u32 = 7; pub const KVM_X86_QUIRK_LINT0_REENABLED: u32 = 1; pub const KVM_X86_QUIRK_CD_NW_CLEARED: u32 = 2; pub const KVM_X86_QUIRK_LAPIC_MMIO_HOLE: u32 = 4; pub const KVM_X86_QUIRK_OUT_7E_INC_RIP: u32 = 8; pub const KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT: u32 = 16; pub const KVM_X86_QUIRK_FIX_HYPERCALL_INSN: u32 = 32; pub const KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS: u32 = 64; pub const KVM_STATE_NESTED_FORMAT_VMX: u32 = 0; pub const KVM_STATE_NESTED_FORMAT_SVM: u32 = 1; pub const KVM_STATE_NESTED_GUEST_MODE: u32 = 1; pub const KVM_STATE_NESTED_RUN_PENDING: u32 = 2; pub const KVM_STATE_NESTED_EVMCS: u32 = 4; pub const KVM_STATE_NESTED_MTF_PENDING: u32 = 8; pub const KVM_STATE_NESTED_GIF_SET: u32 = 256; pub const KVM_STATE_NESTED_SMM_GUEST_MODE: u32 = 1; pub const KVM_STATE_NESTED_SMM_VMXON: u32 = 2; pub const KVM_STATE_NESTED_VMX_VMCS_SIZE: u32 = 4096; pub const KVM_STATE_NESTED_SVM_VMCB_SIZE: u32 = 4096; pub const KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE: u32 = 1; pub const KVM_X86_XCOMP_GUEST_SUPP: u32 = 0; pub const KVM_PMU_EVENT_ALLOW: u32 = 0; pub const KVM_PMU_EVENT_DENY: u32 = 1; pub const KVM_XEN_HVM_CONFIG_HYPERCALL_MSR: u32 = 1; pub const KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL: u32 = 2; pub const KVM_XEN_HVM_CONFIG_SHARED_INFO: u32 = 4; pub const KVM_XEN_HVM_CONFIG_RUNSTATE: u32 = 8; pub const KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL: u32 = 16; pub const KVM_XEN_HVM_CONFIG_EVTCHN_SEND: u32 = 32; pub const KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG: u32 = 64; pub const KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE: u32 = 128; pub const KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA: u32 = 256; pub const KVM_XEN_EVTCHN_DEASSIGN: u32 = 1; pub const KVM_XEN_EVTCHN_UPDATE: u32 = 2; pub const KVM_XEN_EVTCHN_RESET: u32 = 4; pub const KVM_XEN_ATTR_TYPE_LONG_MODE: u32 = 0; pub const KVM_XEN_ATTR_TYPE_SHARED_INFO: u32 = 1; pub const KVM_XEN_ATTR_TYPE_UPCALL_VECTOR: u32 = 2; pub const KVM_XEN_ATTR_TYPE_EVTCHN: u32 = 3; pub const KVM_XEN_ATTR_TYPE_XEN_VERSION: u32 = 4; pub const KVM_XEN_ATTR_TYPE_RUNSTATE_UPDATE_FLAG: u32 = 5; pub const KVM_XEN_ATTR_TYPE_SHARED_INFO_HVA: u32 = 6; pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO: u32 = 0; pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO: u32 = 1; pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR: u32 = 2; pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT: u32 = 3; pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA: u32 = 4; pub const KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST: u32 = 5; pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID: u32 = 6; pub const KVM_XEN_VCPU_ATTR_TYPE_TIMER: u32 = 7; pub const KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR: u32 = 8; pub const KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO_HVA: u32 = 9; pub const KVM_X2APIC_API_USE_32BIT_IDS: u32 = 1; pub const KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK: u32 = 2; pub const KVM_HYPERV_CONN_ID_MASK: u32 = 16777215; pub const KVM_HYPERV_EVENTFD_DEASSIGN: u32 = 1; pub const KVM_PMU_MASKED_ENTRY_UMASK_MASK_SHIFT: u32 = 56; pub const KVM_VCPU_TSC_CTRL: u32 = 0; pub const KVM_VCPU_TSC_OFFSET: u32 = 0; pub const KVM_X86_DEFAULT_VM: u32 = 0; pub const KVM_X86_SW_PROTECTED_VM: u32 = 1; pub const KVM_API_VERSION: u32 = 12; pub const KVM_MEM_LOG_DIRTY_PAGES: u32 = 1; pub const KVM_MEM_READONLY: u32 = 2; pub const KVM_MEM_GUEST_MEMFD: u32 = 4; pub const KVM_PIT_SPEAKER_DUMMY: u32 = 1; pub const KVM_EXIT_HYPERV_SYNIC: u32 = 1; pub const KVM_EXIT_HYPERV_HCALL: u32 = 2; pub const KVM_EXIT_HYPERV_SYNDBG: u32 = 3; pub const KVM_EXIT_XEN_HCALL: u32 = 1; pub const KVM_S390_GET_SKEYS_NONE: u32 = 1; pub const KVM_S390_SKEYS_MAX: u32 = 1048576; pub const KVM_EXIT_UNKNOWN: u32 = 0; pub const KVM_EXIT_EXCEPTION: u32 = 1; pub const KVM_EXIT_IO: u32 = 2; pub const KVM_EXIT_HYPERCALL: u32 = 3; pub const KVM_EXIT_DEBUG: u32 = 4; pub const KVM_EXIT_HLT: u32 = 5; pub const KVM_EXIT_MMIO: u32 = 6; pub const KVM_EXIT_IRQ_WINDOW_OPEN: u32 = 7; pub const KVM_EXIT_SHUTDOWN: u32 = 8; pub const KVM_EXIT_FAIL_ENTRY: u32 = 9; pub const KVM_EXIT_INTR: u32 = 10; pub const KVM_EXIT_SET_TPR: u32 = 11; pub const KVM_EXIT_TPR_ACCESS: u32 = 12; pub const KVM_EXIT_S390_SIEIC: u32 = 13; pub const KVM_EXIT_S390_RESET: u32 = 14; pub const KVM_EXIT_DCR: u32 = 15; pub const KVM_EXIT_NMI: u32 = 16; pub const KVM_EXIT_INTERNAL_ERROR: u32 = 17; pub const KVM_EXIT_OSI: u32 = 18; pub const KVM_EXIT_PAPR_HCALL: u32 = 19; pub const KVM_EXIT_S390_UCONTROL: u32 = 20; pub const KVM_EXIT_WATCHDOG: u32 = 21; pub const KVM_EXIT_S390_TSCH: u32 = 22; pub const KVM_EXIT_EPR: u32 = 23; pub const KVM_EXIT_SYSTEM_EVENT: u32 = 24; pub const KVM_EXIT_S390_STSI: u32 = 25; pub const KVM_EXIT_IOAPIC_EOI: u32 = 26; pub const KVM_EXIT_HYPERV: u32 = 27; pub const KVM_EXIT_ARM_NISV: u32 = 28; pub const KVM_EXIT_X86_RDMSR: u32 = 29; pub const KVM_EXIT_X86_WRMSR: u32 = 30; pub const KVM_EXIT_DIRTY_RING_FULL: u32 = 31; pub const KVM_EXIT_AP_RESET_HOLD: u32 = 32; pub const KVM_EXIT_X86_BUS_LOCK: u32 = 33; pub const KVM_EXIT_XEN: u32 = 34; pub const KVM_EXIT_RISCV_SBI: u32 = 35; pub const KVM_EXIT_RISCV_CSR: u32 = 36; pub const KVM_EXIT_NOTIFY: u32 = 37; pub const KVM_EXIT_LOONGARCH_IOCSR: u32 = 38; pub const KVM_EXIT_MEMORY_FAULT: u32 = 39; pub const KVM_INTERNAL_ERROR_EMULATION: u32 = 1; pub const KVM_INTERNAL_ERROR_SIMUL_EX: u32 = 2; pub const KVM_INTERNAL_ERROR_DELIVERY_EV: u32 = 3; pub const KVM_INTERNAL_ERROR_UNEXPECTED_EXIT_REASON: u32 = 4; pub const KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES: u32 = 1; pub const KVM_EXIT_IO_IN: u32 = 0; pub const KVM_EXIT_IO_OUT: u32 = 1; pub const KVM_SYSTEM_EVENT_SHUTDOWN: u32 = 1; pub const KVM_SYSTEM_EVENT_RESET: u32 = 2; pub const KVM_SYSTEM_EVENT_CRASH: u32 = 3; pub const KVM_SYSTEM_EVENT_WAKEUP: u32 = 4; pub const KVM_SYSTEM_EVENT_SUSPEND: u32 = 5; pub const KVM_SYSTEM_EVENT_SEV_TERM: u32 = 6; pub const KVM_MSR_EXIT_REASON_INVAL: u32 = 1; pub const KVM_MSR_EXIT_REASON_UNKNOWN: u32 = 2; pub const KVM_MSR_EXIT_REASON_FILTER: u32 = 4; pub const KVM_MSR_EXIT_REASON_VALID_MASK: u32 = 7; pub const KVM_NOTIFY_CONTEXT_INVALID: u32 = 1; pub const KVM_MEMORY_EXIT_FLAG_PRIVATE: u32 = 8; pub const SYNC_REGS_SIZE_BYTES: u32 = 2048; pub const KVM_MP_STATE_RUNNABLE: u32 = 0; pub const KVM_MP_STATE_UNINITIALIZED: u32 = 1; pub const KVM_MP_STATE_INIT_RECEIVED: u32 = 2; pub const KVM_MP_STATE_HALTED: u32 = 3; pub const KVM_MP_STATE_SIPI_RECEIVED: u32 = 4; pub const KVM_MP_STATE_STOPPED: u32 = 5; pub const KVM_MP_STATE_CHECK_STOP: u32 = 6; pub const KVM_MP_STATE_OPERATING: u32 = 7; pub const KVM_MP_STATE_LOAD: u32 = 8; pub const KVM_MP_STATE_AP_RESET_HOLD: u32 = 9; pub const KVM_MP_STATE_SUSPENDED: u32 = 10; pub const KVM_GUESTDBG_ENABLE: u32 = 1; pub const KVM_GUESTDBG_SINGLESTEP: u32 = 2; pub const KVM_X86_DISABLE_EXITS_MWAIT: u32 = 1; pub const KVM_X86_DISABLE_EXITS_HLT: u32 = 2; pub const KVM_X86_DISABLE_EXITS_PAUSE: u32 = 4; pub const KVM_X86_DISABLE_EXITS_CSTATE: u32 = 8; pub const KVM_X86_DISABLE_VALID_EXITS: u32 = 15; pub const KVMIO: u32 = 174; pub const KVM_VM_S390_UCONTROL: u32 = 1; pub const KVM_VM_PPC_HV: u32 = 1; pub const KVM_VM_PPC_PR: u32 = 2; pub const KVM_VM_MIPS_AUTO: u32 = 0; pub const KVM_VM_MIPS_VZ: u32 = 1; pub const KVM_VM_MIPS_TE: u32 = 2; pub const KVM_S390_SIE_PAGE_OFFSET: u32 = 1; pub const KVM_VM_TYPE_ARM_IPA_SIZE_MASK: u32 = 255; pub const KVM_CAP_IRQCHIP: u32 = 0; pub const KVM_CAP_HLT: u32 = 1; pub const KVM_CAP_MMU_SHADOW_CACHE_CONTROL: u32 = 2; pub const KVM_CAP_USER_MEMORY: u32 = 3; pub const KVM_CAP_SET_TSS_ADDR: u32 = 4; pub const KVM_CAP_VAPIC: u32 = 6; pub const KVM_CAP_EXT_CPUID: u32 = 7; pub const KVM_CAP_CLOCKSOURCE: u32 = 8; pub const KVM_CAP_NR_VCPUS: u32 = 9; pub const KVM_CAP_NR_MEMSLOTS: u32 = 10; pub const KVM_CAP_PIT: u32 = 11; pub const KVM_CAP_NOP_IO_DELAY: u32 = 12; pub const KVM_CAP_PV_MMU: u32 = 13; pub const KVM_CAP_MP_STATE: u32 = 14; pub const KVM_CAP_COALESCED_MMIO: u32 = 15; pub const KVM_CAP_SYNC_MMU: u32 = 16; pub const KVM_CAP_IOMMU: u32 = 18; pub const KVM_CAP_DESTROY_MEMORY_REGION_WORKS: u32 = 21; pub const KVM_CAP_USER_NMI: u32 = 22; pub const KVM_CAP_SET_GUEST_DEBUG: u32 = 23; pub const KVM_CAP_REINJECT_CONTROL: u32 = 24; pub const KVM_CAP_IRQ_ROUTING: u32 = 25; pub const KVM_CAP_IRQ_INJECT_STATUS: u32 = 26; pub const KVM_CAP_ASSIGN_DEV_IRQ: u32 = 29; pub const KVM_CAP_JOIN_MEMORY_REGIONS_WORKS: u32 = 30; pub const KVM_CAP_MCE: u32 = 31; pub const KVM_CAP_IRQFD: u32 = 32; pub const KVM_CAP_PIT2: u32 = 33; pub const KVM_CAP_SET_BOOT_CPU_ID: u32 = 34; pub const KVM_CAP_PIT_STATE2: u32 = 35; pub const KVM_CAP_IOEVENTFD: u32 = 36; pub const KVM_CAP_SET_IDENTITY_MAP_ADDR: u32 = 37; pub const KVM_CAP_XEN_HVM: u32 = 38; pub const KVM_CAP_ADJUST_CLOCK: u32 = 39; pub const KVM_CAP_INTERNAL_ERROR_DATA: u32 = 40; pub const KVM_CAP_VCPU_EVENTS: u32 = 41; pub const KVM_CAP_S390_PSW: u32 = 42; pub const KVM_CAP_PPC_SEGSTATE: u32 = 43; pub const KVM_CAP_HYPERV: u32 = 44; pub const KVM_CAP_HYPERV_VAPIC: u32 = 45; pub const KVM_CAP_HYPERV_SPIN: u32 = 46; pub const KVM_CAP_PCI_SEGMENT: u32 = 47; pub const KVM_CAP_PPC_PAIRED_SINGLES: u32 = 48; pub const KVM_CAP_INTR_SHADOW: u32 = 49; pub const KVM_CAP_DEBUGREGS: u32 = 50; pub const KVM_CAP_X86_ROBUST_SINGLESTEP: u32 = 51; pub const KVM_CAP_PPC_OSI: u32 = 52; pub const KVM_CAP_PPC_UNSET_IRQ: u32 = 53; pub const KVM_CAP_ENABLE_CAP: u32 = 54; pub const KVM_CAP_XSAVE: u32 = 55; pub const KVM_CAP_XCRS: u32 = 56; pub const KVM_CAP_PPC_GET_PVINFO: u32 = 57; pub const KVM_CAP_PPC_IRQ_LEVEL: u32 = 58; pub const KVM_CAP_ASYNC_PF: u32 = 59; pub const KVM_CAP_TSC_CONTROL: u32 = 60; pub const KVM_CAP_GET_TSC_KHZ: u32 = 61; pub const KVM_CAP_PPC_BOOKE_SREGS: u32 = 62; pub const KVM_CAP_SPAPR_TCE: u32 = 63; pub const KVM_CAP_PPC_SMT: u32 = 64; pub const KVM_CAP_PPC_RMA: u32 = 65; pub const KVM_CAP_MAX_VCPUS: u32 = 66; pub const KVM_CAP_PPC_HIOR: u32 = 67; pub const KVM_CAP_PPC_PAPR: u32 = 68; pub const KVM_CAP_SW_TLB: u32 = 69; pub const KVM_CAP_ONE_REG: u32 = 70; pub const KVM_CAP_S390_GMAP: u32 = 71; pub const KVM_CAP_TSC_DEADLINE_TIMER: u32 = 72; pub const KVM_CAP_S390_UCONTROL: u32 = 73; pub const KVM_CAP_SYNC_REGS: u32 = 74; pub const KVM_CAP_PCI_2_3: u32 = 75; pub const KVM_CAP_KVMCLOCK_CTRL: u32 = 76; pub const KVM_CAP_SIGNAL_MSI: u32 = 77; pub const KVM_CAP_PPC_GET_SMMU_INFO: u32 = 78; pub const KVM_CAP_S390_COW: u32 = 79; pub const KVM_CAP_PPC_ALLOC_HTAB: u32 = 80; pub const KVM_CAP_READONLY_MEM: u32 = 81; pub const KVM_CAP_IRQFD_RESAMPLE: u32 = 82; pub const KVM_CAP_PPC_BOOKE_WATCHDOG: u32 = 83; pub const KVM_CAP_PPC_HTAB_FD: u32 = 84; pub const KVM_CAP_S390_CSS_SUPPORT: u32 = 85; pub const KVM_CAP_PPC_EPR: u32 = 86; pub const KVM_CAP_ARM_PSCI: u32 = 87; pub const KVM_CAP_ARM_SET_DEVICE_ADDR: u32 = 88; pub const KVM_CAP_DEVICE_CTRL: u32 = 89; pub const KVM_CAP_IRQ_MPIC: u32 = 90; pub const KVM_CAP_PPC_RTAS: u32 = 91; pub const KVM_CAP_IRQ_XICS: u32 = 92; pub const KVM_CAP_ARM_EL1_32BIT: u32 = 93; pub const KVM_CAP_SPAPR_MULTITCE: u32 = 94; pub const KVM_CAP_EXT_EMUL_CPUID: u32 = 95; pub const KVM_CAP_HYPERV_TIME: u32 = 96; pub const KVM_CAP_IOAPIC_POLARITY_IGNORED: u32 = 97; pub const KVM_CAP_ENABLE_CAP_VM: u32 = 98; pub const KVM_CAP_S390_IRQCHIP: u32 = 99; pub const KVM_CAP_IOEVENTFD_NO_LENGTH: u32 = 100; pub const KVM_CAP_VM_ATTRIBUTES: u32 = 101; pub const KVM_CAP_ARM_PSCI_0_2: u32 = 102; pub const KVM_CAP_PPC_FIXUP_HCALL: u32 = 103; pub const KVM_CAP_PPC_ENABLE_HCALL: u32 = 104; pub const KVM_CAP_CHECK_EXTENSION_VM: u32 = 105; pub const KVM_CAP_S390_USER_SIGP: u32 = 106; pub const KVM_CAP_S390_VECTOR_REGISTERS: u32 = 107; pub const KVM_CAP_S390_MEM_OP: u32 = 108; pub const KVM_CAP_S390_USER_STSI: u32 = 109; pub const KVM_CAP_S390_SKEYS: u32 = 110; pub const KVM_CAP_MIPS_FPU: u32 = 111; pub const KVM_CAP_MIPS_MSA: u32 = 112; pub const KVM_CAP_S390_INJECT_IRQ: u32 = 113; pub const KVM_CAP_S390_IRQ_STATE: u32 = 114; pub const KVM_CAP_PPC_HWRNG: u32 = 115; pub const KVM_CAP_DISABLE_QUIRKS: u32 = 116; pub const KVM_CAP_X86_SMM: u32 = 117; pub const KVM_CAP_MULTI_ADDRESS_SPACE: u32 = 118; pub const KVM_CAP_GUEST_DEBUG_HW_BPS: u32 = 119; pub const KVM_CAP_GUEST_DEBUG_HW_WPS: u32 = 120; pub const KVM_CAP_SPLIT_IRQCHIP: u32 = 121; pub const KVM_CAP_IOEVENTFD_ANY_LENGTH: u32 = 122; pub const KVM_CAP_HYPERV_SYNIC: u32 = 123; pub const KVM_CAP_S390_RI: u32 = 124; pub const KVM_CAP_SPAPR_TCE_64: u32 = 125; pub const KVM_CAP_ARM_PMU_V3: u32 = 126; pub const KVM_CAP_VCPU_ATTRIBUTES: u32 = 127; pub const KVM_CAP_MAX_VCPU_ID: u32 = 128; pub const KVM_CAP_X2APIC_API: u32 = 129; pub const KVM_CAP_S390_USER_INSTR0: u32 = 130; pub const KVM_CAP_MSI_DEVID: u32 = 131; pub const KVM_CAP_PPC_HTM: u32 = 132; pub const KVM_CAP_SPAPR_RESIZE_HPT: u32 = 133; pub const KVM_CAP_PPC_MMU_RADIX: u32 = 134; pub const KVM_CAP_PPC_MMU_HASH_V3: u32 = 135; pub const KVM_CAP_IMMEDIATE_EXIT: u32 = 136; pub const KVM_CAP_MIPS_VZ: u32 = 137; pub const KVM_CAP_MIPS_TE: u32 = 138; pub const KVM_CAP_MIPS_64BIT: u32 = 139; pub const KVM_CAP_S390_GS: u32 = 140; pub const KVM_CAP_S390_AIS: u32 = 141; pub const KVM_CAP_SPAPR_TCE_VFIO: u32 = 142; pub const KVM_CAP_X86_DISABLE_EXITS: u32 = 143; pub const KVM_CAP_ARM_USER_IRQ: u32 = 144; pub const KVM_CAP_S390_CMMA_MIGRATION: u32 = 145; pub const KVM_CAP_PPC_FWNMI: u32 = 146; pub const KVM_CAP_PPC_SMT_POSSIBLE: u32 = 147; pub const KVM_CAP_HYPERV_SYNIC2: u32 = 148; pub const KVM_CAP_HYPERV_VP_INDEX: u32 = 149; pub const KVM_CAP_S390_AIS_MIGRATION: u32 = 150; pub const KVM_CAP_PPC_GET_CPU_CHAR: u32 = 151; pub const KVM_CAP_S390_BPB: u32 = 152; pub const KVM_CAP_GET_MSR_FEATURES: u32 = 153; pub const KVM_CAP_HYPERV_EVENTFD: u32 = 154; pub const KVM_CAP_HYPERV_TLBFLUSH: u32 = 155; pub const KVM_CAP_S390_HPAGE_1M: u32 = 156; pub const KVM_CAP_NESTED_STATE: u32 = 157; pub const KVM_CAP_ARM_INJECT_SERROR_ESR: u32 = 158; pub const KVM_CAP_MSR_PLATFORM_INFO: u32 = 159; pub const KVM_CAP_PPC_NESTED_HV: u32 = 160; pub const KVM_CAP_HYPERV_SEND_IPI: u32 = 161; pub const KVM_CAP_COALESCED_PIO: u32 = 162; pub const KVM_CAP_HYPERV_ENLIGHTENED_VMCS: u32 = 163; pub const KVM_CAP_EXCEPTION_PAYLOAD: u32 = 164; pub const KVM_CAP_ARM_VM_IPA_SIZE: u32 = 165; pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT: u32 = 166; pub const KVM_CAP_HYPERV_CPUID: u32 = 167; pub const KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2: u32 = 168; pub const KVM_CAP_PPC_IRQ_XIVE: u32 = 169; pub const KVM_CAP_ARM_SVE: u32 = 170; pub const KVM_CAP_ARM_PTRAUTH_ADDRESS: u32 = 171; pub const KVM_CAP_ARM_PTRAUTH_GENERIC: u32 = 172; pub const KVM_CAP_PMU_EVENT_FILTER: u32 = 173; pub const KVM_CAP_ARM_IRQ_LINE_LAYOUT_2: u32 = 174; pub const KVM_CAP_HYPERV_DIRECT_TLBFLUSH: u32 = 175; pub const KVM_CAP_PPC_GUEST_DEBUG_SSTEP: u32 = 176; pub const KVM_CAP_ARM_NISV_TO_USER: u32 = 177; pub const KVM_CAP_ARM_INJECT_EXT_DABT: u32 = 178; pub const KVM_CAP_S390_VCPU_RESETS: u32 = 179; pub const KVM_CAP_S390_PROTECTED: u32 = 180; pub const KVM_CAP_PPC_SECURE_GUEST: u32 = 181; pub const KVM_CAP_HALT_POLL: u32 = 182; pub const KVM_CAP_ASYNC_PF_INT: u32 = 183; pub const KVM_CAP_LAST_CPU: u32 = 184; pub const KVM_CAP_SMALLER_MAXPHYADDR: u32 = 185; pub const KVM_CAP_S390_DIAG318: u32 = 186; pub const KVM_CAP_STEAL_TIME: u32 = 187; pub const KVM_CAP_X86_USER_SPACE_MSR: u32 = 188; pub const KVM_CAP_X86_MSR_FILTER: u32 = 189; pub const KVM_CAP_ENFORCE_PV_FEATURE_CPUID: u32 = 190; pub const KVM_CAP_SYS_HYPERV_CPUID: u32 = 191; pub const KVM_CAP_DIRTY_LOG_RING: u32 = 192; pub const KVM_CAP_X86_BUS_LOCK_EXIT: u32 = 193; pub const KVM_CAP_PPC_DAWR1: u32 = 194; pub const KVM_CAP_SET_GUEST_DEBUG2: u32 = 195; pub const KVM_CAP_SGX_ATTRIBUTE: u32 = 196; pub const KVM_CAP_VM_COPY_ENC_CONTEXT_FROM: u32 = 197; pub const KVM_CAP_PTP_KVM: u32 = 198; pub const KVM_CAP_HYPERV_ENFORCE_CPUID: u32 = 199; pub const KVM_CAP_SREGS2: u32 = 200; pub const KVM_CAP_EXIT_HYPERCALL: u32 = 201; pub const KVM_CAP_PPC_RPT_INVALIDATE: u32 = 202; pub const KVM_CAP_BINARY_STATS_FD: u32 = 203; pub const KVM_CAP_EXIT_ON_EMULATION_FAILURE: u32 = 204; pub const KVM_CAP_ARM_MTE: u32 = 205; pub const KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM: u32 = 206; pub const KVM_CAP_VM_GPA_BITS: u32 = 207; pub const KVM_CAP_XSAVE2: u32 = 208; pub const KVM_CAP_SYS_ATTRIBUTES: u32 = 209; pub const KVM_CAP_PPC_AIL_MODE_3: u32 = 210; pub const KVM_CAP_S390_MEM_OP_EXTENSION: u32 = 211; pub const KVM_CAP_PMU_CAPABILITY: u32 = 212; pub const KVM_CAP_DISABLE_QUIRKS2: u32 = 213; pub const KVM_CAP_VM_TSC_CONTROL: u32 = 214; pub const KVM_CAP_SYSTEM_EVENT_DATA: u32 = 215; pub const KVM_CAP_ARM_SYSTEM_SUSPEND: u32 = 216; pub const KVM_CAP_S390_PROTECTED_DUMP: u32 = 217; pub const KVM_CAP_X86_TRIPLE_FAULT_EVENT: u32 = 218; pub const KVM_CAP_X86_NOTIFY_VMEXIT: u32 = 219; pub const KVM_CAP_VM_DISABLE_NX_HUGE_PAGES: u32 = 220; pub const KVM_CAP_S390_ZPCI_OP: u32 = 221; pub const KVM_CAP_S390_CPU_TOPOLOGY: u32 = 222; pub const KVM_CAP_DIRTY_LOG_RING_ACQ_REL: u32 = 223; pub const KVM_CAP_S390_PROTECTED_ASYNC_DISABLE: u32 = 224; pub const KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP: u32 = 225; pub const KVM_CAP_PMU_EVENT_MASKED_EVENTS: u32 = 226; pub const KVM_CAP_COUNTER_OFFSET: u32 = 227; pub const KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE: u32 = 228; pub const KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES: u32 = 229; pub const KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES: u32 = 230; pub const KVM_CAP_USER_MEMORY2: u32 = 231; pub const KVM_CAP_MEMORY_FAULT_INFO: u32 = 232; pub const KVM_CAP_MEMORY_ATTRIBUTES: u32 = 233; pub const KVM_CAP_GUEST_MEMFD: u32 = 234; pub const KVM_CAP_VM_TYPES: u32 = 235; pub const KVM_IRQ_ROUTING_IRQCHIP: u32 = 1; pub const KVM_IRQ_ROUTING_MSI: u32 = 2; pub const KVM_IRQ_ROUTING_S390_ADAPTER: u32 = 3; pub const KVM_IRQ_ROUTING_HV_SINT: u32 = 4; pub const KVM_IRQ_ROUTING_XEN_EVTCHN: u32 = 5; pub const KVM_IRQFD_FLAG_DEASSIGN: u32 = 1; pub const KVM_IRQFD_FLAG_RESAMPLE: u32 = 2; pub const KVM_CLOCK_TSC_STABLE: u32 = 2; pub const KVM_CLOCK_REALTIME: u32 = 4; pub const KVM_CLOCK_HOST_TSC: u32 = 8; pub const KVM_MMU_FSL_BOOKE_NOHV: u32 = 0; pub const KVM_MMU_FSL_BOOKE_HV: u32 = 1; pub const KVM_REG_ARCH_MASK: i64 = -72057594037927936; pub const KVM_REG_GENERIC: u32 = 0; pub const KVM_REG_PPC: u64 = 1152921504606846976; pub const KVM_REG_X86: u64 = 2305843009213693952; pub const KVM_REG_IA64: u64 = 3458764513820540928; pub const KVM_REG_ARM: u64 = 4611686018427387904; pub const KVM_REG_S390: u64 = 5764607523034234880; pub const KVM_REG_ARM64: u64 = 6917529027641081856; pub const KVM_REG_MIPS: u64 = 8070450532247928832; pub const KVM_REG_RISCV: i64 = -9223372036854775808; pub const KVM_REG_LOONGARCH: i64 = -8070450532247928832; pub const KVM_REG_SIZE_SHIFT: u32 = 52; pub const KVM_REG_SIZE_MASK: u64 = 67553994410557440; pub const KVM_REG_SIZE_U8: u32 = 0; pub const KVM_REG_SIZE_U16: u64 = 4503599627370496; pub const KVM_REG_SIZE_U32: u64 = 9007199254740992; pub const KVM_REG_SIZE_U64: u64 = 13510798882111488; pub const KVM_REG_SIZE_U128: u64 = 18014398509481984; pub const KVM_REG_SIZE_U256: u64 = 22517998136852480; pub const KVM_REG_SIZE_U512: u64 = 27021597764222976; pub const KVM_REG_SIZE_U1024: u64 = 31525197391593472; pub const KVM_REG_SIZE_U2048: u64 = 36028797018963968; pub const KVM_MSI_VALID_DEVID: u32 = 1; pub const KVM_CREATE_DEVICE_TEST: u32 = 1; pub const KVM_DEV_VFIO_FILE: u32 = 1; pub const KVM_DEV_VFIO_FILE_ADD: u32 = 1; pub const KVM_DEV_VFIO_FILE_DEL: u32 = 2; pub const KVM_DEV_VFIO_GROUP: u32 = 1; pub const KVM_DEV_VFIO_GROUP_ADD: u32 = 1; pub const KVM_DEV_VFIO_GROUP_DEL: u32 = 2; pub const KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: u32 = 3; pub const KVM_S390_STORE_STATUS_NOADDR: i32 = -1; pub const KVM_S390_STORE_STATUS_PREFIXED: i32 = -2; pub const KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE: u32 = 1; pub const KVM_DIRTY_LOG_INITIALLY_SET: u32 = 2; pub const KVM_DIRTY_GFN_F_MASK: u32 = 3; pub const KVM_BUS_LOCK_DETECTION_OFF: u32 = 1; pub const KVM_BUS_LOCK_DETECTION_EXIT: u32 = 2; pub const KVM_PMU_CAP_DISABLE: u32 = 1; pub const KVM_STATS_TYPE_SHIFT: u32 = 0; pub const KVM_STATS_TYPE_MASK: u32 = 15; pub const KVM_STATS_TYPE_CUMULATIVE: u32 = 0; pub const KVM_STATS_TYPE_INSTANT: u32 = 1; pub const KVM_STATS_TYPE_PEAK: u32 = 2; pub const KVM_STATS_TYPE_LINEAR_HIST: u32 = 3; pub const KVM_STATS_TYPE_LOG_HIST: u32 = 4; pub const KVM_STATS_TYPE_MAX: u32 = 4; pub const KVM_STATS_UNIT_SHIFT: u32 = 4; pub const KVM_STATS_UNIT_MASK: u32 = 240; pub const KVM_STATS_UNIT_NONE: u32 = 0; pub const KVM_STATS_UNIT_BYTES: u32 = 16; pub const KVM_STATS_UNIT_SECONDS: u32 = 32; pub const KVM_STATS_UNIT_CYCLES: u32 = 48; pub const KVM_STATS_UNIT_BOOLEAN: u32 = 64; pub const KVM_STATS_UNIT_MAX: u32 = 64; pub const KVM_STATS_BASE_SHIFT: u32 = 8; pub const KVM_STATS_BASE_MASK: u32 = 3840; pub const KVM_STATS_BASE_POW10: u32 = 0; pub const KVM_STATS_BASE_POW2: u32 = 256; pub const KVM_STATS_BASE_MAX: u32 = 256; pub const KVM_X86_NOTIFY_VMEXIT_ENABLED: u32 = 1; pub const KVM_X86_NOTIFY_VMEXIT_USER: u32 = 2; pub const KVM_MEMORY_ATTRIBUTE_PRIVATE: u32 = 8; pub type __s8 = ::std::os::raw::c_schar; pub type __u8 = ::std::os::raw::c_uchar; pub type __s16 = ::std::os::raw::c_short; pub type __u16 = ::std::os::raw::c_ushort; pub type __s32 = ::std::os::raw::c_int; pub type __u32 = ::std::os::raw::c_uint; pub type __s64 = ::std::os::raw::c_longlong; pub type __u64 = ::std::os::raw::c_ulonglong; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __kernel_fd_set { pub fds_bits: [::std::os::raw::c_ulong; 16usize], } #[test] fn bindgen_test_layout___kernel_fd_set() { const UNINIT: ::std::mem::MaybeUninit<__kernel_fd_set> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__kernel_fd_set>(), 128usize, concat!("Size of: ", stringify!(__kernel_fd_set)) ); assert_eq!( ::std::mem::align_of::<__kernel_fd_set>(), 8usize, concat!("Alignment of ", stringify!(__kernel_fd_set)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fds_bits) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__kernel_fd_set), "::", stringify!(fds_bits) ) ); } pub type __kernel_sighandler_t = ::std::option::Option; pub type __kernel_key_t = ::std::os::raw::c_int; pub type __kernel_mqd_t = ::std::os::raw::c_int; pub type __kernel_old_uid_t = ::std::os::raw::c_ushort; pub type __kernel_old_gid_t = ::std::os::raw::c_ushort; pub type __kernel_old_dev_t = ::std::os::raw::c_ulong; pub type __kernel_long_t = ::std::os::raw::c_long; pub type __kernel_ulong_t = ::std::os::raw::c_ulong; pub type __kernel_ino_t = __kernel_ulong_t; pub type __kernel_mode_t = ::std::os::raw::c_uint; pub type __kernel_pid_t = ::std::os::raw::c_int; pub type __kernel_ipc_pid_t = ::std::os::raw::c_int; pub type __kernel_uid_t = ::std::os::raw::c_uint; pub type __kernel_gid_t = ::std::os::raw::c_uint; pub type __kernel_suseconds_t = __kernel_long_t; pub type __kernel_daddr_t = ::std::os::raw::c_int; pub type __kernel_uid32_t = ::std::os::raw::c_uint; pub type __kernel_gid32_t = ::std::os::raw::c_uint; pub type __kernel_size_t = __kernel_ulong_t; pub type __kernel_ssize_t = __kernel_long_t; pub type __kernel_ptrdiff_t = __kernel_long_t; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct __kernel_fsid_t { pub val: [::std::os::raw::c_int; 2usize], } #[test] fn bindgen_test_layout___kernel_fsid_t() { const UNINIT: ::std::mem::MaybeUninit<__kernel_fsid_t> = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::<__kernel_fsid_t>(), 8usize, concat!("Size of: ", stringify!(__kernel_fsid_t)) ); assert_eq!( ::std::mem::align_of::<__kernel_fsid_t>(), 4usize, concat!("Alignment of ", stringify!(__kernel_fsid_t)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).val) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(__kernel_fsid_t), "::", stringify!(val) ) ); } pub type __kernel_off_t = __kernel_long_t; pub type __kernel_loff_t = ::std::os::raw::c_longlong; pub type __kernel_old_time_t = __kernel_long_t; pub type __kernel_time_t = __kernel_long_t; pub type __kernel_time64_t = ::std::os::raw::c_longlong; pub type __kernel_clock_t = __kernel_long_t; pub type __kernel_timer_t = ::std::os::raw::c_int; pub type __kernel_clockid_t = ::std::os::raw::c_int; pub type __kernel_caddr_t = *mut ::std::os::raw::c_char; pub type __kernel_uid16_t = ::std::os::raw::c_ushort; pub type __kernel_gid16_t = ::std::os::raw::c_ushort; pub type __s128 = i128; pub type __u128 = u128; pub type __le16 = __u16; pub type __be16 = __u16; pub type __le32 = __u32; pub type __be32 = __u32; pub type __le64 = __u64; pub type __be64 = __u64; pub type __sum16 = __u16; pub type __wsum = __u32; pub type __poll_t = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_pic_state { pub last_irr: __u8, pub irr: __u8, pub imr: __u8, pub isr: __u8, pub priority_add: __u8, pub irq_base: __u8, pub read_reg_select: __u8, pub poll: __u8, pub special_mask: __u8, pub init_state: __u8, pub auto_eoi: __u8, pub rotate_on_auto_eoi: __u8, pub special_fully_nested_mode: __u8, pub init4: __u8, pub elcr: __u8, pub elcr_mask: __u8, } #[test] fn bindgen_test_layout_kvm_pic_state() { 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!(kvm_pic_state)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_pic_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).last_irr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(last_irr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irr) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(irr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).imr) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(imr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).isr) as usize - ptr as usize }, 3usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(isr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).priority_add) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(priority_add) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irq_base) as usize - ptr as usize }, 5usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(irq_base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).read_reg_select) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(read_reg_select) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).poll) as usize - ptr as usize }, 7usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(poll) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).special_mask) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(special_mask) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).init_state) as usize - ptr as usize }, 9usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(init_state) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).auto_eoi) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(auto_eoi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rotate_on_auto_eoi) as usize - ptr as usize }, 11usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(rotate_on_auto_eoi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).special_fully_nested_mode) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(special_fully_nested_mode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).init4) as usize - ptr as usize }, 13usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(init4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).elcr) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(elcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).elcr_mask) as usize - ptr as usize }, 15usize, concat!( "Offset of field: ", stringify!(kvm_pic_state), "::", stringify!(elcr_mask) ) ); } #[repr(C)] #[derive(Copy, Clone)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_ioapic_state { pub base_address: __u64, pub ioregsel: __u32, pub id: __u32, pub irr: __u32, pub pad: __u32, pub redirtbl: [kvm_ioapic_state__bindgen_ty_1; 24usize], } #[repr(C)] #[derive(Copy, Clone)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub union kvm_ioapic_state__bindgen_ty_1 { pub bits: __u64, pub fields: kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1 { pub vector: __u8, pub _bitfield_align_1: [u8; 0], pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, pub reserved: [__u8; 4usize], pub dest_id: __u8, } #[test] fn bindgen_test_layout_kvm_ioapic_state__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::(), 8usize, concat!( "Size of: ", stringify!(kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vector) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1), "::", stringify!(vector) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 3usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dest_id) as usize - ptr as usize }, 7usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1), "::", stringify!(dest_id) ) ); } impl kvm_ioapic_state__bindgen_ty_1__bindgen_ty_1 { #[inline] pub fn delivery_mode(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 3u8) as u8) } } #[inline] pub fn set_delivery_mode(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(0usize, 3u8, val as u64) } } #[inline] pub fn dest_mode(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) } } #[inline] pub fn set_dest_mode(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(3usize, 1u8, val as u64) } } #[inline] pub fn delivery_status(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) } } #[inline] pub fn set_delivery_status(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(4usize, 1u8, val as u64) } } #[inline] pub fn polarity(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) } } #[inline] pub fn set_polarity(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(5usize, 1u8, val as u64) } } #[inline] pub fn remote_irr(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) } } #[inline] pub fn set_remote_irr(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(6usize, 1u8, val as u64) } } #[inline] pub fn trig_mode(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) } } #[inline] pub fn set_trig_mode(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(7usize, 1u8, val as u64) } } #[inline] pub fn mask(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) } } #[inline] pub fn set_mask(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(8usize, 1u8, val as u64) } } #[inline] pub fn reserve(&self) -> __u8 { unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 7u8) as u8) } } #[inline] pub fn set_reserve(&mut self, val: __u8) { unsafe { let val: u8 = ::std::mem::transmute(val); self._bitfield_1.set(9usize, 7u8, val as u64) } } #[inline] pub fn new_bitfield_1( delivery_mode: __u8, dest_mode: __u8, delivery_status: __u8, polarity: __u8, remote_irr: __u8, trig_mode: __u8, mask: __u8, reserve: __u8, ) -> __BindgenBitfieldUnit<[u8; 2usize]> { let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); __bindgen_bitfield_unit.set(0usize, 3u8, { let delivery_mode: u8 = unsafe { ::std::mem::transmute(delivery_mode) }; delivery_mode as u64 }); __bindgen_bitfield_unit.set(3usize, 1u8, { let dest_mode: u8 = unsafe { ::std::mem::transmute(dest_mode) }; dest_mode as u64 }); __bindgen_bitfield_unit.set(4usize, 1u8, { let delivery_status: u8 = unsafe { ::std::mem::transmute(delivery_status) }; delivery_status as u64 }); __bindgen_bitfield_unit.set(5usize, 1u8, { let polarity: u8 = unsafe { ::std::mem::transmute(polarity) }; polarity as u64 }); __bindgen_bitfield_unit.set(6usize, 1u8, { let remote_irr: u8 = unsafe { ::std::mem::transmute(remote_irr) }; remote_irr as u64 }); __bindgen_bitfield_unit.set(7usize, 1u8, { let trig_mode: u8 = unsafe { ::std::mem::transmute(trig_mode) }; trig_mode as u64 }); __bindgen_bitfield_unit.set(8usize, 1u8, { let mask: u8 = unsafe { ::std::mem::transmute(mask) }; mask as u64 }); __bindgen_bitfield_unit.set(9usize, 7u8, { let reserve: u8 = unsafe { ::std::mem::transmute(reserve) }; reserve as u64 }); __bindgen_bitfield_unit } } #[test] fn bindgen_test_layout_kvm_ioapic_state__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_ioapic_state__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_ioapic_state__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bits) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state__bindgen_ty_1), "::", stringify!(bits) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fields) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state__bindgen_ty_1), "::", stringify!(fields) ) ); } impl Default for kvm_ioapic_state__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() } } } impl ::std::fmt::Debug for kvm_ioapic_state__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_ioapic_state__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_ioapic_state() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 216usize, concat!("Size of: ", stringify!(kvm_ioapic_state)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_ioapic_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).base_address) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state), "::", stringify!(base_address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ioregsel) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state), "::", stringify!(ioregsel) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state), "::", stringify!(irr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).redirtbl) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_ioapic_state), "::", stringify!(redirtbl) ) ); } impl Default for kvm_ioapic_state { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_ioapic_state { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_ioapic_state {{ base_address: {:?}, ioregsel: {:?}, id: {:?}, irr: {:?}, pad: {:?}, redirtbl: {:?} }}" , self . base_address , self . ioregsel , self . id , self . irr , self . pad , self . redirtbl) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_regs { pub rax: __u64, pub rbx: __u64, pub rcx: __u64, pub rdx: __u64, pub rsi: __u64, pub rdi: __u64, pub rsp: __u64, pub rbp: __u64, pub r8: __u64, pub r9: __u64, pub r10: __u64, pub r11: __u64, pub r12: __u64, pub r13: __u64, pub r14: __u64, pub r15: __u64, pub rip: __u64, pub rflags: __u64, } #[test] fn bindgen_test_layout_kvm_regs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 144usize, concat!("Size of: ", stringify!(kvm_regs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_regs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rax) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rax) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rbx) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rbx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rcx) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rcx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rdx) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rdx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rsi) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rdi) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rdi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rsp) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rsp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rbp) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rbp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r8) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r9) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r9) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r10) as usize - ptr as usize }, 80usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r10) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r11) as usize - ptr as usize }, 88usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r11) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r12) as usize - ptr as usize }, 96usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r12) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r13) as usize - ptr as usize }, 104usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r13) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r14) as usize - ptr as usize }, 112usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r14) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).r15) as usize - ptr as usize }, 120usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(r15) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rip) as usize - ptr as usize }, 128usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rflags) as usize - ptr as usize }, 136usize, concat!( "Offset of field: ", stringify!(kvm_regs), "::", stringify!(rflags) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_lapic_state { pub regs: [::std::os::raw::c_char; 1024usize], } #[test] fn bindgen_test_layout_kvm_lapic_state() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 1024usize, concat!("Size of: ", stringify!(kvm_lapic_state)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_lapic_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_lapic_state), "::", stringify!(regs) ) ); } impl Default for kvm_lapic_state { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_segment { pub base: __u64, pub limit: __u32, pub selector: __u16, pub type_: __u8, pub present: __u8, pub dpl: __u8, pub db: __u8, pub s: __u8, pub l: __u8, pub g: __u8, pub avl: __u8, pub unusable: __u8, pub padding: __u8, } #[test] fn bindgen_test_layout_kvm_segment() { 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!(kvm_segment)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_segment)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).base) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(limit) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).selector) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(selector) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).present) as usize - ptr as usize }, 15usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(present) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dpl) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(dpl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).db) as usize - ptr as usize }, 17usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(db) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s) as usize - ptr as usize }, 18usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(s) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).l) as usize - ptr as usize }, 19usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(l) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).g) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(g) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).avl) as usize - ptr as usize }, 21usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(avl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).unusable) as usize - ptr as usize }, 22usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(unusable) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 23usize, concat!( "Offset of field: ", stringify!(kvm_segment), "::", stringify!(padding) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_dtable { pub base: __u64, pub limit: __u16, pub padding: [__u16; 3usize], } #[test] fn bindgen_test_layout_kvm_dtable() { 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!(kvm_dtable)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dtable)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).base) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dtable), "::", stringify!(base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_dtable), "::", stringify!(limit) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(kvm_dtable), "::", stringify!(padding) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_sregs { pub cs: kvm_segment, pub ds: kvm_segment, pub es: kvm_segment, pub fs: kvm_segment, pub gs: kvm_segment, pub ss: kvm_segment, pub tr: kvm_segment, pub ldt: kvm_segment, pub gdt: kvm_dtable, pub idt: kvm_dtable, pub cr0: __u64, pub cr2: __u64, pub cr3: __u64, pub cr4: __u64, pub cr8: __u64, pub efer: __u64, pub apic_base: __u64, pub interrupt_bitmap: [__u64; 4usize], } #[test] fn bindgen_test_layout_kvm_sregs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 312usize, concat!("Size of: ", stringify!(kvm_sregs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sregs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(cs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ds) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(ds) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).es) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(es) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fs) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(fs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gs) as usize - ptr as usize }, 96usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(gs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ss) as usize - ptr as usize }, 120usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(ss) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tr) as usize - ptr as usize }, 144usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(tr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ldt) as usize - ptr as usize }, 168usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(ldt) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gdt) as usize - ptr as usize }, 192usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(gdt) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).idt) as usize - ptr as usize }, 208usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(idt) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr0) as usize - ptr as usize }, 224usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(cr0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr2) as usize - ptr as usize }, 232usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(cr2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr3) as usize - ptr as usize }, 240usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(cr3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr4) as usize - ptr as usize }, 248usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(cr4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr8) as usize - ptr as usize }, 256usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(cr8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).efer) as usize - ptr as usize }, 264usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(efer) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apic_base) as usize - ptr as usize }, 272usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(apic_base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).interrupt_bitmap) as usize - ptr as usize }, 280usize, concat!( "Offset of field: ", stringify!(kvm_sregs), "::", stringify!(interrupt_bitmap) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sregs2 { pub cs: kvm_segment, pub ds: kvm_segment, pub es: kvm_segment, pub fs: kvm_segment, pub gs: kvm_segment, pub ss: kvm_segment, pub tr: kvm_segment, pub ldt: kvm_segment, pub gdt: kvm_dtable, pub idt: kvm_dtable, pub cr0: __u64, pub cr2: __u64, pub cr3: __u64, pub cr4: __u64, pub cr8: __u64, pub efer: __u64, pub apic_base: __u64, pub flags: __u64, pub pdptrs: [__u64; 4usize], } #[test] fn bindgen_test_layout_kvm_sregs2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 320usize, concat!("Size of: ", stringify!(kvm_sregs2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sregs2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(cs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ds) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(ds) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).es) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(es) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fs) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(fs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gs) as usize - ptr as usize }, 96usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(gs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ss) as usize - ptr as usize }, 120usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(ss) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tr) as usize - ptr as usize }, 144usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(tr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ldt) as usize - ptr as usize }, 168usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(ldt) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gdt) as usize - ptr as usize }, 192usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(gdt) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).idt) as usize - ptr as usize }, 208usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(idt) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr0) as usize - ptr as usize }, 224usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(cr0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr2) as usize - ptr as usize }, 232usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(cr2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr3) as usize - ptr as usize }, 240usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(cr3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr4) as usize - ptr as usize }, 248usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(cr4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr8) as usize - ptr as usize }, 256usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(cr8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).efer) as usize - ptr as usize }, 264usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(efer) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apic_base) as usize - ptr as usize }, 272usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(apic_base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 280usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pdptrs) as usize - ptr as usize }, 288usize, concat!( "Offset of field: ", stringify!(kvm_sregs2), "::", stringify!(pdptrs) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_fpu { pub fpr: [[__u8; 16usize]; 8usize], pub fcw: __u16, pub fsw: __u16, pub ftwx: __u8, pub pad1: __u8, pub last_opcode: __u16, pub last_ip: __u64, pub last_dp: __u64, pub xmm: [[__u8; 16usize]; 16usize], pub mxcsr: __u32, pub pad2: __u32, } #[test] fn bindgen_test_layout_kvm_fpu() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 416usize, concat!("Size of: ", stringify!(kvm_fpu)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_fpu)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fpr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(fpr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fcw) as usize - ptr as usize }, 128usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(fcw) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fsw) as usize - ptr as usize }, 130usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(fsw) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ftwx) as usize - ptr as usize }, 132usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(ftwx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 133usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).last_opcode) as usize - ptr as usize }, 134usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(last_opcode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).last_ip) as usize - ptr as usize }, 136usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(last_ip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).last_dp) as usize - ptr as usize }, 144usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(last_dp) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xmm) as usize - ptr as usize }, 152usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(xmm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mxcsr) as usize - ptr as usize }, 408usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(mxcsr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 412usize, concat!( "Offset of field: ", stringify!(kvm_fpu), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_msr_entry { pub index: __u32, pub reserved: __u32, pub data: __u64, } #[test] fn bindgen_test_layout_kvm_msr_entry() { 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!(kvm_msr_entry)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_msr_entry)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msr_entry), "::", stringify!(index) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_msr_entry), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_msr_entry), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Debug, Default)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_msrs { pub nmsrs: __u32, pub pad: __u32, pub entries: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_msrs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_msrs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_msrs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nmsrs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msrs), "::", stringify!(nmsrs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_msrs), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_msrs), "::", stringify!(entries) ) ); } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_msr_list { pub nmsrs: __u32, pub indices: __IncompleteArrayField<__u32>, } #[test] fn bindgen_test_layout_kvm_msr_list() { 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!(kvm_msr_list)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_msr_list)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nmsrs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msr_list), "::", stringify!(nmsrs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).indices) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_msr_list), "::", stringify!(indices) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_msr_filter_range { pub flags: __u32, pub nmsrs: __u32, pub base: __u32, pub bitmap: *mut __u8, } #[test] fn bindgen_test_layout_kvm_msr_filter_range() { 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!(kvm_msr_filter_range)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_msr_filter_range)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msr_filter_range), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nmsrs) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_msr_filter_range), "::", stringify!(nmsrs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).base) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_msr_filter_range), "::", stringify!(base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bitmap) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_msr_filter_range), "::", stringify!(bitmap) ) ); } impl Default for kvm_msr_filter_range { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_msr_filter { pub flags: __u32, pub ranges: [kvm_msr_filter_range; 16usize], } #[test] fn bindgen_test_layout_kvm_msr_filter() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 392usize, concat!("Size of: ", stringify!(kvm_msr_filter)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_msr_filter)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msr_filter), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ranges) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_msr_filter), "::", stringify!(ranges) ) ); } impl Default for kvm_msr_filter { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_cpuid_entry { pub function: __u32, pub eax: __u32, pub ebx: __u32, pub ecx: __u32, pub edx: __u32, pub padding: __u32, } #[test] fn bindgen_test_layout_kvm_cpuid_entry() { 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!(kvm_cpuid_entry)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_cpuid_entry)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).function) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry), "::", stringify!(function) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).eax) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry), "::", stringify!(eax) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ebx) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry), "::", stringify!(ebx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ecx) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry), "::", stringify!(ecx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).edx) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry), "::", stringify!(edx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry), "::", stringify!(padding) ) ); } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_cpuid { pub nent: __u32, pub padding: __u32, pub entries: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_cpuid() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_cpuid)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_cpuid)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nent) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_cpuid), "::", stringify!(nent) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_cpuid), "::", stringify!(padding) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_cpuid), "::", stringify!(entries) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_cpuid_entry2 { pub function: __u32, pub index: __u32, pub flags: __u32, pub eax: __u32, pub ebx: __u32, pub ecx: __u32, pub edx: __u32, pub padding: [__u32; 3usize], } #[test] fn bindgen_test_layout_kvm_cpuid_entry2() { 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!(kvm_cpuid_entry2)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_cpuid_entry2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).function) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(function) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(index) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).eax) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(eax) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ebx) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(ebx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ecx) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(ecx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).edx) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(edx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_cpuid_entry2), "::", stringify!(padding) ) ); } #[repr(C)] #[derive(Debug, Default)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_cpuid2 { pub nent: __u32, pub padding: __u32, pub entries: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_cpuid2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_cpuid2)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_cpuid2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nent) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_cpuid2), "::", stringify!(nent) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_cpuid2), "::", stringify!(padding) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_cpuid2), "::", stringify!(entries) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_pit_channel_state { pub count: __u32, pub latched_count: __u16, pub count_latched: __u8, pub status_latched: __u8, pub status: __u8, pub read_state: __u8, pub write_state: __u8, pub write_latch: __u8, pub rw_mode: __u8, pub mode: __u8, pub bcd: __u8, pub gate: __u8, pub count_load_time: __s64, } #[test] fn bindgen_test_layout_kvm_pit_channel_state() { 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!(kvm_pit_channel_state)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_pit_channel_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(count) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).latched_count) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(latched_count) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).count_latched) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(count_latched) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status_latched) as usize - ptr as usize }, 7usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(status_latched) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(status) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).read_state) as usize - ptr as usize }, 9usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(read_state) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).write_state) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(write_state) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).write_latch) as usize - ptr as usize }, 11usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(write_latch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rw_mode) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(rw_mode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize }, 13usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(mode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bcd) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(bcd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gate) as usize - ptr as usize }, 15usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(gate) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).count_load_time) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_pit_channel_state), "::", stringify!(count_load_time) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_debug_exit_arch { pub exception: __u32, pub pad: __u32, pub pc: __u64, pub dr6: __u64, pub dr7: __u64, } #[test] fn bindgen_test_layout_kvm_debug_exit_arch() { 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!(kvm_debug_exit_arch)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_debug_exit_arch)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(exception) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pc) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(pc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dr6) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(dr6) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dr7) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_debug_exit_arch), "::", stringify!(dr7) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_guest_debug_arch { pub debugreg: [__u64; 8usize], } #[test] fn bindgen_test_layout_kvm_guest_debug_arch() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_guest_debug_arch)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_guest_debug_arch)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).debugreg) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug_arch), "::", stringify!(debugreg) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_pit_state { pub channels: [kvm_pit_channel_state; 3usize], } #[test] fn bindgen_test_layout_kvm_pit_state() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_pit_state)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_pit_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).channels) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pit_state), "::", stringify!(channels) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_pit_state2 { pub channels: [kvm_pit_channel_state; 3usize], pub flags: __u32, pub reserved: [__u32; 9usize], } #[test] fn bindgen_test_layout_kvm_pit_state2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 112usize, concat!("Size of: ", stringify!(kvm_pit_state2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_pit_state2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).channels) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pit_state2), "::", stringify!(channels) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 72usize, concat!( "Offset of field: ", stringify!(kvm_pit_state2), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 76usize, concat!( "Offset of field: ", stringify!(kvm_pit_state2), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_reinject_control { pub pit_reinject: __u8, pub reserved: [__u8; 31usize], } #[test] fn bindgen_test_layout_kvm_reinject_control() { 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!(kvm_reinject_control)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_reinject_control)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pit_reinject) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_reinject_control), "::", stringify!(pit_reinject) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_reinject_control), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_vcpu_events { pub exception: kvm_vcpu_events__bindgen_ty_1, pub interrupt: kvm_vcpu_events__bindgen_ty_2, pub nmi: kvm_vcpu_events__bindgen_ty_3, pub sipi_vector: __u32, pub flags: __u32, pub smi: kvm_vcpu_events__bindgen_ty_4, pub triple_fault: kvm_vcpu_events__bindgen_ty_5, pub reserved: [__u8; 26usize], pub exception_has_payload: __u8, pub exception_payload: __u64, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_vcpu_events__bindgen_ty_1 { pub injected: __u8, pub nr: __u8, pub has_error_code: __u8, pub pending: __u8, pub error_code: __u32, } #[test] fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_vcpu_events__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_vcpu_events__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).injected) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(injected) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).has_error_code) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(has_error_code) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pending) as usize - ptr as usize }, 3usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(pending) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error_code) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_1), "::", stringify!(error_code) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_vcpu_events__bindgen_ty_2 { pub injected: __u8, pub nr: __u8, pub soft: __u8, pub shadow: __u8, } #[test] fn bindgen_test_layout_kvm_vcpu_events__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!(kvm_vcpu_events__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_vcpu_events__bindgen_ty_2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).injected) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_2), "::", stringify!(injected) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_2), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).soft) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_2), "::", stringify!(soft) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).shadow) as usize - ptr as usize }, 3usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_2), "::", stringify!(shadow) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_vcpu_events__bindgen_ty_3 { pub injected: __u8, pub pending: __u8, pub masked: __u8, pub pad: __u8, } #[test] fn bindgen_test_layout_kvm_vcpu_events__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!(kvm_vcpu_events__bindgen_ty_3)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_vcpu_events__bindgen_ty_3)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).injected) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_3), "::", stringify!(injected) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pending) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_3), "::", stringify!(pending) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).masked) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_3), "::", stringify!(masked) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 3usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_3), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_vcpu_events__bindgen_ty_4 { pub smm: __u8, pub pending: __u8, pub smm_inside_nmi: __u8, pub latched_init: __u8, } #[test] fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_4() { 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!(kvm_vcpu_events__bindgen_ty_4)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_vcpu_events__bindgen_ty_4)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).smm) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_4), "::", stringify!(smm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pending) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_4), "::", stringify!(pending) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).smm_inside_nmi) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_4), "::", stringify!(smm_inside_nmi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).latched_init) as usize - ptr as usize }, 3usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_4), "::", stringify!(latched_init) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_vcpu_events__bindgen_ty_5 { pub pending: __u8, } #[test] fn bindgen_test_layout_kvm_vcpu_events__bindgen_ty_5() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 1usize, concat!("Size of: ", stringify!(kvm_vcpu_events__bindgen_ty_5)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_vcpu_events__bindgen_ty_5)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pending) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events__bindgen_ty_5), "::", stringify!(pending) ) ); } #[test] fn bindgen_test_layout_kvm_vcpu_events() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_vcpu_events)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_vcpu_events)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(exception) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).interrupt) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(interrupt) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nmi) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(nmi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sipi_vector) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(sipi_vector) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).smi) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(smi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).triple_fault) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(triple_fault) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 29usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception_has_payload) as usize - ptr as usize }, 55usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(exception_has_payload) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception_payload) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_vcpu_events), "::", stringify!(exception_payload) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_debugregs { pub db: [__u64; 4usize], pub dr6: __u64, pub dr7: __u64, pub flags: __u64, pub reserved: [__u64; 9usize], } #[test] fn bindgen_test_layout_kvm_debugregs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 128usize, concat!("Size of: ", stringify!(kvm_debugregs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_debugregs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).db) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_debugregs), "::", stringify!(db) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dr6) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_debugregs), "::", stringify!(dr6) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dr7) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_debugregs), "::", stringify!(dr7) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_debugregs), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_debugregs), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_xsave { pub region: [__u32; 1024usize], pub extra: __IncompleteArrayField<__u32>, } #[test] fn bindgen_test_layout_kvm_xsave() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4096usize, concat!("Size of: ", stringify!(kvm_xsave)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_xsave)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).region) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xsave), "::", stringify!(region) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).extra) as usize - ptr as usize }, 4096usize, concat!( "Offset of field: ", stringify!(kvm_xsave), "::", stringify!(extra) ) ); } impl Default for kvm_xsave { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_xcr { pub xcr: __u32, pub reserved: __u32, pub value: __u64, } #[test] fn bindgen_test_layout_kvm_xcr() { 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!(kvm_xcr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xcr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xcr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xcr), "::", stringify!(xcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xcr), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xcr), "::", stringify!(value) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_xcrs { pub nr_xcrs: __u32, pub flags: __u32, pub xcrs: [kvm_xcr; 16usize], pub padding: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_xcrs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 392usize, concat!("Size of: ", stringify!(kvm_xcrs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xcrs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr_xcrs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xcrs), "::", stringify!(nr_xcrs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xcrs), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xcrs) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xcrs), "::", stringify!(xcrs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 264usize, concat!( "Offset of field: ", stringify!(kvm_xcrs), "::", stringify!(padding) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sync_regs { pub regs: kvm_regs, pub sregs: kvm_sregs, pub events: kvm_vcpu_events, } #[test] fn bindgen_test_layout_kvm_sync_regs() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 520usize, concat!("Size of: ", stringify!(kvm_sync_regs)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sync_regs)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sync_regs), "::", stringify!(regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sregs) as usize - ptr as usize }, 144usize, concat!( "Offset of field: ", stringify!(kvm_sync_regs), "::", stringify!(sregs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).events) as usize - ptr as usize }, 456usize, concat!( "Offset of field: ", stringify!(kvm_sync_regs), "::", stringify!(events) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_vmx_nested_state_data { pub vmcs12: [__u8; 4096usize], pub shadow_vmcs12: [__u8; 4096usize], } #[test] fn bindgen_test_layout_kvm_vmx_nested_state_data() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8192usize, concat!("Size of: ", stringify!(kvm_vmx_nested_state_data)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_vmx_nested_state_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vmcs12) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_data), "::", stringify!(vmcs12) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).shadow_vmcs12) as usize - ptr as usize }, 4096usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_data), "::", stringify!(shadow_vmcs12) ) ); } impl Default for kvm_vmx_nested_state_data { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vmx_nested_state_hdr { pub vmxon_pa: __u64, pub vmcs12_pa: __u64, pub smm: kvm_vmx_nested_state_hdr__bindgen_ty_1, pub pad: __u16, pub flags: __u32, pub preemption_timer_deadline: __u64, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vmx_nested_state_hdr__bindgen_ty_1 { pub flags: __u16, } #[test] fn bindgen_test_layout_kvm_vmx_nested_state_hdr__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2usize, concat!( "Size of: ", stringify!(kvm_vmx_nested_state_hdr__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 2usize, concat!( "Alignment of ", stringify!(kvm_vmx_nested_state_hdr__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_hdr__bindgen_ty_1), "::", stringify!(flags) ) ); } #[test] fn bindgen_test_layout_kvm_vmx_nested_state_hdr() { 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!(kvm_vmx_nested_state_hdr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_vmx_nested_state_hdr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vmxon_pa) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_hdr), "::", stringify!(vmxon_pa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vmcs12_pa) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_hdr), "::", stringify!(vmcs12_pa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).smm) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_hdr), "::", stringify!(smm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 18usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_hdr), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_hdr), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).preemption_timer_deadline) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_vmx_nested_state_hdr), "::", stringify!(preemption_timer_deadline) ) ); } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_svm_nested_state_data { pub vmcb12: [__u8; 4096usize], } #[test] fn bindgen_test_layout_kvm_svm_nested_state_data() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 4096usize, concat!("Size of: ", stringify!(kvm_svm_nested_state_data)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_svm_nested_state_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vmcb12) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_svm_nested_state_data), "::", stringify!(vmcb12) ) ); } impl Default for kvm_svm_nested_state_data { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_svm_nested_state_hdr { pub vmcb_pa: __u64, } #[test] fn bindgen_test_layout_kvm_svm_nested_state_hdr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_svm_nested_state_hdr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_svm_nested_state_hdr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vmcb_pa) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_svm_nested_state_hdr), "::", stringify!(vmcb_pa) ) ); } #[repr(C)] pub struct kvm_nested_state { pub flags: __u16, pub format: __u16, pub size: __u32, pub hdr: kvm_nested_state__bindgen_ty_1, pub data: kvm_nested_state__bindgen_ty_2, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_nested_state__bindgen_ty_1 { pub vmx: kvm_vmx_nested_state_hdr, pub svm: kvm_svm_nested_state_hdr, pub pad: [__u8; 120usize], } #[test] fn bindgen_test_layout_kvm_nested_state__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 120usize, concat!("Size of: ", stringify!(kvm_nested_state__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_nested_state__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vmx) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state__bindgen_ty_1), "::", stringify!(vmx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).svm) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state__bindgen_ty_1), "::", stringify!(svm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state__bindgen_ty_1), "::", stringify!(pad) ) ); } impl Default for kvm_nested_state__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() } } } impl ::std::fmt::Debug for kvm_nested_state__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_nested_state__bindgen_ty_1 {{ union }}") } } #[repr(C)] pub struct kvm_nested_state__bindgen_ty_2 { pub __bindgen_anon_1: __BindgenUnionField, pub __bindgen_anon_2: __BindgenUnionField, pub bindgen_union_field: [u8; 0usize], } #[repr(C)] #[derive(Debug)] pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_1 { pub __empty_vmx: kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1, pub vmx: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 {} #[test] fn bindgen_test_layout_kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!( "Size of: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1) ) ); } #[test] fn bindgen_test_layout_kvm_nested_state__bindgen_ty_2__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 0usize, concat!( "Size of: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).__empty_vmx) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_1), "::", stringify!(__empty_vmx) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vmx) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_1), "::", stringify!(vmx) ) ); } impl Default for kvm_nested_state__bindgen_ty_2__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() } } } #[repr(C)] #[derive(Debug)] pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_2 { pub __empty_svm: kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1, pub svm: __IncompleteArrayField, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1 {} #[test] fn bindgen_test_layout_kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!( "Size of: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_2__bindgen_ty_1) ) ); } #[test] fn bindgen_test_layout_kvm_nested_state__bindgen_ty_2__bindgen_ty_2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 0usize, concat!( "Size of: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).__empty_svm) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_2), "::", stringify!(__empty_svm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).svm) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state__bindgen_ty_2__bindgen_ty_2), "::", stringify!(svm) ) ); } impl Default for kvm_nested_state__bindgen_ty_2__bindgen_ty_2 { 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_kvm_nested_state__bindgen_ty_2() { assert_eq!( ::std::mem::size_of::(), 0usize, concat!("Size of: ", stringify!(kvm_nested_state__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!("Alignment of ", stringify!(kvm_nested_state__bindgen_ty_2)) ); } impl Default for kvm_nested_state__bindgen_ty_2 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_nested_state__bindgen_ty_2 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_nested_state__bindgen_ty_2 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_nested_state() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 128usize, concat!("Size of: ", stringify!(kvm_nested_state)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_nested_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_nested_state), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).format) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_nested_state), "::", stringify!(format) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_nested_state), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_nested_state), "::", stringify!(hdr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 128usize, concat!( "Offset of field: ", stringify!(kvm_nested_state), "::", stringify!(data) ) ); } impl Default for kvm_nested_state { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_nested_state { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_nested_state {{ flags: {:?}, format: {:?}, size: {:?}, hdr: {:?}, data: {:?} }}", self.flags, self.format, self.size, self.hdr, self.data ) } } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_pmu_event_filter { pub action: __u32, pub nevents: __u32, pub fixed_counter_bitmap: __u32, pub flags: __u32, pub pad: [__u32; 4usize], pub events: __IncompleteArrayField<__u64>, } #[test] fn bindgen_test_layout_kvm_pmu_event_filter() { 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!(kvm_pmu_event_filter)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_pmu_event_filter)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(action) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nevents) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(nevents) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fixed_counter_bitmap) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(fixed_counter_bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).events) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_pmu_event_filter), "::", stringify!(events) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_x86_mce { pub status: __u64, pub addr: __u64, pub misc: __u64, pub mcg_status: __u64, pub bank: __u8, pub pad1: [__u8; 7usize], pub pad2: [__u64; 3usize], } #[test] fn bindgen_test_layout_kvm_x86_mce() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_x86_mce)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_x86_mce)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_x86_mce), "::", stringify!(status) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_x86_mce), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).misc) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_x86_mce), "::", stringify!(misc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mcg_status) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_x86_mce), "::", stringify!(mcg_status) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bank) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_x86_mce), "::", stringify!(bank) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 33usize, concat!( "Offset of field: ", stringify!(kvm_x86_mce), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_x86_mce), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_hvm_config { pub flags: __u32, pub msr: __u32, pub blob_addr_32: __u64, pub blob_addr_64: __u64, pub blob_size_32: __u8, pub blob_size_64: __u8, pub pad2: [__u8; 30usize], } #[test] fn bindgen_test_layout_kvm_xen_hvm_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 56usize, concat!("Size of: ", stringify!(kvm_xen_hvm_config)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_hvm_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_config), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_config), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).blob_addr_32) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_config), "::", stringify!(blob_addr_32) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).blob_addr_64) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_config), "::", stringify!(blob_addr_64) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).blob_size_32) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_config), "::", stringify!(blob_size_32) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).blob_size_64) as usize - ptr as usize }, 25usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_config), "::", stringify!(blob_size_64) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 26usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_config), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_xen_hvm_attr { pub type_: __u16, pub pad: [__u16; 3usize], pub u: kvm_xen_hvm_attr__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_xen_hvm_attr__bindgen_ty_1 { pub long_mode: __u8, pub vector: __u8, pub runstate_update_flag: __u8, pub shared_info: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1, pub evtchn: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2, pub xen_version: __u32, pub pad: [__u64; 8usize], } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 { pub gfn: __u64, pub hva: __u64, } #[test] fn bindgen_test_layout_kvm_xen_hvm_attr__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::(), 8usize, concat!( "Size of: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gfn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(gfn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hva) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(hva) ) ); } impl Default for kvm_xen_hvm_attr__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() } } } impl ::std::fmt::Debug for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_1 {{ union }}" ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 { pub send_port: __u32, pub type_: __u32, pub flags: __u32, pub deliver: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 { pub port: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1, pub eventfd: kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2, pub padding: [__u32; 4usize], } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1 { pub port: __u32, pub vcpu: __u32, pub priority: __u32, } #[test] fn bindgen_test_layout_kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit< kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1, > = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::< kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1, >(), 12usize, concat!( "Size of: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::< kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1, >(), 4usize, concat!( "Alignment of ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1), "::", stringify!(vcpu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_1), "::", stringify!(priority) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2 { pub port: __u32, pub fd: __s32, } #[test] fn bindgen_test_layout_kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2() { const UNINIT: ::std::mem::MaybeUninit< kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2, > = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::< kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2, >(), 8usize, concat!( "Size of: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::< kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2, >(), 4usize, concat!( "Alignment of ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1__bindgen_ty_2), "::", stringify!(fd) ) ); } #[test] fn bindgen_test_layout_kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit< kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1, > = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, concat!( "Size of: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).eventfd) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1), "::", stringify!(eventfd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1), "::", stringify!(padding) ) ); } impl Default for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__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() } } } impl ::std::fmt::Debug for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_xen_hvm_attr__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::(), 28usize, concat!( "Size of: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).send_port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2), "::", stringify!(send_port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).deliver) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2), "::", stringify!(deliver) ) ); } impl Default for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_xen_hvm_attr__bindgen_ty_1__bindgen_ty_2 {{ send_port: {:?}, type: {:?}, flags: {:?}, deliver: {:?} }}" , self . send_port , self . type_ , self . flags , self . deliver) } } #[test] fn bindgen_test_layout_kvm_xen_hvm_attr__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).long_mode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1), "::", stringify!(long_mode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vector) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1), "::", stringify!(vector) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).runstate_update_flag) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1), "::", stringify!(runstate_update_flag) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).shared_info) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1), "::", stringify!(shared_info) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).evtchn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1), "::", stringify!(evtchn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xen_version) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1), "::", stringify!(xen_version) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr__bindgen_ty_1), "::", stringify!(pad) ) ); } impl Default for kvm_xen_hvm_attr__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() } } } impl ::std::fmt::Debug for kvm_xen_hvm_attr__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_xen_hvm_attr__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_xen_hvm_attr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_xen_hvm_attr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_hvm_attr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_hvm_attr), "::", stringify!(u) ) ); } impl Default for kvm_xen_hvm_attr { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_xen_hvm_attr { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_xen_hvm_attr {{ type: {:?}, pad: {:?}, u: {:?} }}", self.type_, self.pad, self.u ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_xen_vcpu_attr { pub type_: __u16, pub pad: [__u16; 3usize], pub u: kvm_xen_vcpu_attr__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_xen_vcpu_attr__bindgen_ty_1 { pub gpa: __u64, pub hva: __u64, pub pad: [__u64; 8usize], pub runstate: kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1, pub vcpu_id: __u32, pub timer: kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2, pub vector: __u8, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1 { pub state: __u64, pub state_entry_time: __u64, pub time_running: __u64, pub time_runnable: __u64, pub time_blocked: __u64, pub time_offline: __u64, } #[test] fn bindgen_test_layout_kvm_xen_vcpu_attr__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::(), 48usize, concat!( "Size of: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(state) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).state_entry_time) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(state_entry_time) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).time_running) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(time_running) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).time_runnable) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(time_runnable) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).time_blocked) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(time_blocked) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).time_offline) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_1), "::", stringify!(time_offline) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2 { pub port: __u32, pub priority: __u32, pub expires_ns: __u64, } #[test] fn bindgen_test_layout_kvm_xen_vcpu_attr__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::(), 16usize, concat!( "Size of: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2), "::", stringify!(priority) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).expires_ns) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1__bindgen_ty_2), "::", stringify!(expires_ns) ) ); } #[test] fn bindgen_test_layout_kvm_xen_vcpu_attr__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gpa) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1), "::", stringify!(gpa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hva) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1), "::", stringify!(hva) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).runstate) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1), "::", stringify!(runstate) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1), "::", stringify!(vcpu_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).timer) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1), "::", stringify!(timer) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vector) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr__bindgen_ty_1), "::", stringify!(vector) ) ); } impl Default for kvm_xen_vcpu_attr__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() } } } impl ::std::fmt::Debug for kvm_xen_vcpu_attr__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_xen_vcpu_attr__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_xen_vcpu_attr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_xen_vcpu_attr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_vcpu_attr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_vcpu_attr), "::", stringify!(u) ) ); } impl Default for kvm_xen_vcpu_attr { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_xen_vcpu_attr { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_xen_vcpu_attr {{ type: {:?}, pad: {:?}, u: {:?} }}", self.type_, self.pad, self.u ) } } pub const sev_cmd_id_KVM_SEV_INIT: sev_cmd_id = 0; pub const sev_cmd_id_KVM_SEV_ES_INIT: sev_cmd_id = 1; pub const sev_cmd_id_KVM_SEV_LAUNCH_START: sev_cmd_id = 2; pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_DATA: sev_cmd_id = 3; pub const sev_cmd_id_KVM_SEV_LAUNCH_UPDATE_VMSA: sev_cmd_id = 4; pub const sev_cmd_id_KVM_SEV_LAUNCH_SECRET: sev_cmd_id = 5; pub const sev_cmd_id_KVM_SEV_LAUNCH_MEASURE: sev_cmd_id = 6; pub const sev_cmd_id_KVM_SEV_LAUNCH_FINISH: sev_cmd_id = 7; pub const sev_cmd_id_KVM_SEV_SEND_START: sev_cmd_id = 8; pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_DATA: sev_cmd_id = 9; pub const sev_cmd_id_KVM_SEV_SEND_UPDATE_VMSA: sev_cmd_id = 10; pub const sev_cmd_id_KVM_SEV_SEND_FINISH: sev_cmd_id = 11; pub const sev_cmd_id_KVM_SEV_RECEIVE_START: sev_cmd_id = 12; pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_DATA: sev_cmd_id = 13; pub const sev_cmd_id_KVM_SEV_RECEIVE_UPDATE_VMSA: sev_cmd_id = 14; pub const sev_cmd_id_KVM_SEV_RECEIVE_FINISH: sev_cmd_id = 15; pub const sev_cmd_id_KVM_SEV_GUEST_STATUS: sev_cmd_id = 16; pub const sev_cmd_id_KVM_SEV_DBG_DECRYPT: sev_cmd_id = 17; pub const sev_cmd_id_KVM_SEV_DBG_ENCRYPT: sev_cmd_id = 18; pub const sev_cmd_id_KVM_SEV_CERT_EXPORT: sev_cmd_id = 19; pub const sev_cmd_id_KVM_SEV_GET_ATTESTATION_REPORT: sev_cmd_id = 20; pub const sev_cmd_id_KVM_SEV_SEND_CANCEL: sev_cmd_id = 21; pub const sev_cmd_id_KVM_SEV_NR_MAX: sev_cmd_id = 22; pub type sev_cmd_id = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_cmd { pub id: __u32, pub pad0: __u32, pub data: __u64, pub error: __u32, pub sev_fd: __u32, } #[test] fn bindgen_test_layout_kvm_sev_cmd() { 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!(kvm_sev_cmd)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_cmd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_cmd), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_sev_cmd), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_cmd), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_cmd), "::", stringify!(error) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sev_fd) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_sev_cmd), "::", stringify!(sev_fd) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_launch_start { pub handle: __u32, pub policy: __u32, pub dh_uaddr: __u64, pub dh_len: __u32, pub pad0: __u32, pub session_uaddr: __u64, pub session_len: __u32, pub pad1: __u32, } #[test] fn bindgen_test_layout_kvm_sev_launch_start() { 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!(kvm_sev_launch_start)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_launch_start)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(handle) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).policy) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(policy) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dh_uaddr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(dh_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dh_len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(dh_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).session_uaddr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(session_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).session_len) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(session_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 36usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_start), "::", stringify!(pad1) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_launch_update_data { pub uaddr: __u64, pub len: __u32, pub pad0: __u32, } #[test] fn bindgen_test_layout_kvm_sev_launch_update_data() { 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!(kvm_sev_launch_update_data)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_launch_update_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).uaddr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_update_data), "::", stringify!(uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_update_data), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_update_data), "::", stringify!(pad0) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_launch_secret { pub hdr_uaddr: __u64, pub hdr_len: __u32, pub pad0: __u32, pub guest_uaddr: __u64, pub guest_len: __u32, pub pad1: __u32, pub trans_uaddr: __u64, pub trans_len: __u32, pub pad2: __u32, } #[test] fn bindgen_test_layout_kvm_sev_launch_secret() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_sev_launch_secret)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_launch_secret)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_uaddr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(hdr_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(hdr_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_uaddr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(guest_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_len) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(guest_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_uaddr) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(trans_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_len) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(trans_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 44usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_secret), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_launch_measure { pub uaddr: __u64, pub len: __u32, pub pad0: __u32, } #[test] fn bindgen_test_layout_kvm_sev_launch_measure() { 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!(kvm_sev_launch_measure)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_launch_measure)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).uaddr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_measure), "::", stringify!(uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_measure), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_sev_launch_measure), "::", stringify!(pad0) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_guest_status { pub handle: __u32, pub policy: __u32, pub state: __u32, } #[test] fn bindgen_test_layout_kvm_sev_guest_status() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(kvm_sev_guest_status)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_sev_guest_status)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_guest_status), "::", stringify!(handle) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).policy) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_sev_guest_status), "::", stringify!(policy) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_guest_status), "::", stringify!(state) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_dbg { pub src_uaddr: __u64, pub dst_uaddr: __u64, pub len: __u32, pub pad0: __u32, } #[test] fn bindgen_test_layout_kvm_sev_dbg() { 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!(kvm_sev_dbg)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_dbg)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).src_uaddr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_dbg), "::", stringify!(src_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dst_uaddr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_dbg), "::", stringify!(dst_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_dbg), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_sev_dbg), "::", stringify!(pad0) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_attestation_report { pub mnonce: [__u8; 16usize], pub uaddr: __u64, pub len: __u32, pub pad0: __u32, } #[test] fn bindgen_test_layout_kvm_sev_attestation_report() { 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!(kvm_sev_attestation_report)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_attestation_report)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mnonce) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_attestation_report), "::", stringify!(mnonce) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).uaddr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_attestation_report), "::", stringify!(uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sev_attestation_report), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_sev_attestation_report), "::", stringify!(pad0) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_send_start { pub policy: __u32, pub pad0: __u32, pub pdh_cert_uaddr: __u64, pub pdh_cert_len: __u32, pub pad1: __u32, pub plat_certs_uaddr: __u64, pub plat_certs_len: __u32, pub pad2: __u32, pub amd_certs_uaddr: __u64, pub amd_certs_len: __u32, pub pad3: __u32, pub session_uaddr: __u64, pub session_len: __u32, pub pad4: __u32, } #[test] fn bindgen_test_layout_kvm_sev_send_start() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_sev_send_start)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_send_start)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).policy) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(policy) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pdh_cert_uaddr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(pdh_cert_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pdh_cert_len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(pdh_cert_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).plat_certs_uaddr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(plat_certs_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).plat_certs_len) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(plat_certs_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 36usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(pad2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).amd_certs_uaddr) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(amd_certs_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).amd_certs_len) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(amd_certs_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad3) as usize - ptr as usize }, 52usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(pad3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).session_uaddr) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(session_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).session_len) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(session_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad4) as usize - ptr as usize }, 68usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_start), "::", stringify!(pad4) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_send_update_data { pub hdr_uaddr: __u64, pub hdr_len: __u32, pub pad0: __u32, pub guest_uaddr: __u64, pub guest_len: __u32, pub pad1: __u32, pub trans_uaddr: __u64, pub trans_len: __u32, pub pad2: __u32, } #[test] fn bindgen_test_layout_kvm_sev_send_update_data() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_sev_send_update_data)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_send_update_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_uaddr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(hdr_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(hdr_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_uaddr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(guest_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_len) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(guest_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_uaddr) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(trans_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_len) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(trans_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 44usize, concat!( "Offset of field: ", stringify!(kvm_sev_send_update_data), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_receive_start { pub handle: __u32, pub policy: __u32, pub pdh_uaddr: __u64, pub pdh_len: __u32, pub pad0: __u32, pub session_uaddr: __u64, pub session_len: __u32, pub pad1: __u32, } #[test] fn bindgen_test_layout_kvm_sev_receive_start() { 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!(kvm_sev_receive_start)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_receive_start)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(handle) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).policy) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(policy) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pdh_uaddr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(pdh_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pdh_len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(pdh_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).session_uaddr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(session_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).session_len) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(session_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 36usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_start), "::", stringify!(pad1) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_sev_receive_update_data { pub hdr_uaddr: __u64, pub hdr_len: __u32, pub pad0: __u32, pub guest_uaddr: __u64, pub guest_len: __u32, pub pad1: __u32, pub trans_uaddr: __u64, pub trans_len: __u32, pub pad2: __u32, } #[test] fn bindgen_test_layout_kvm_sev_receive_update_data() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_sev_receive_update_data)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_sev_receive_update_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_uaddr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(hdr_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(hdr_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_uaddr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(guest_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_len) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(guest_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_uaddr) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(trans_uaddr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_len) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(trans_len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 44usize, concat!( "Offset of field: ", stringify!(kvm_sev_receive_update_data), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_eventfd { pub conn_id: __u32, pub fd: __s32, pub flags: __u32, pub padding: [__u32; 3usize], } #[test] fn bindgen_test_layout_kvm_hyperv_eventfd() { 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!(kvm_hyperv_eventfd)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_hyperv_eventfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).conn_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_eventfd), "::", stringify!(conn_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_eventfd), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_eventfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_eventfd), "::", stringify!(padding) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_userspace_memory_region { pub slot: __u32, pub flags: __u32, pub guest_phys_addr: __u64, pub memory_size: __u64, pub userspace_addr: __u64, } #[test] fn bindgen_test_layout_kvm_userspace_memory_region() { 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!(kvm_userspace_memory_region)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_userspace_memory_region)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_phys_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(guest_phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(memory_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).userspace_addr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region), "::", stringify!(userspace_addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_userspace_memory_region2 { pub slot: __u32, pub flags: __u32, pub guest_phys_addr: __u64, pub memory_size: __u64, pub userspace_addr: __u64, pub guest_memfd_offset: __u64, pub guest_memfd: __u32, pub pad1: __u32, pub pad2: [__u64; 14usize], } #[test] fn bindgen_test_layout_kvm_userspace_memory_region2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 160usize, concat!("Size of: ", stringify!(kvm_userspace_memory_region2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_userspace_memory_region2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_phys_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(memory_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).userspace_addr) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(userspace_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_memfd_offset) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_memfd_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).guest_memfd) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(guest_memfd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 44usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 48usize, concat!( "Offset of field: ", stringify!(kvm_userspace_memory_region2), "::", stringify!(pad2) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_level { pub __bindgen_anon_1: kvm_irq_level__bindgen_ty_1, pub level: __u32, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_level__bindgen_ty_1 { pub irq: __u32, pub status: __s32, } #[test] fn bindgen_test_layout_kvm_irq_level__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!(kvm_irq_level__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_level__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_level__bindgen_ty_1), "::", stringify!(irq) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_level__bindgen_ty_1), "::", stringify!(status) ) ); } impl Default for kvm_irq_level__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() } } } impl ::std::fmt::Debug for kvm_irq_level__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_level__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_level() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_level)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_level)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).level) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_level), "::", stringify!(level) ) ); } impl Default for kvm_irq_level { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_level { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_level {{ __bindgen_anon_1: {:?}, level: {:?} }}", self.__bindgen_anon_1, self.level ) } } #[repr(C)] #[derive(Copy, Clone)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_irqchip { pub chip_id: __u32, pub pad: __u32, pub chip: kvm_irqchip__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irqchip__bindgen_ty_1 { pub dummy: [::std::os::raw::c_char; 512usize], pub pic: kvm_pic_state, pub ioapic: kvm_ioapic_state, } #[test] fn bindgen_test_layout_kvm_irqchip__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 512usize, concat!("Size of: ", stringify!(kvm_irqchip__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irqchip__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dummy) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip__bindgen_ty_1), "::", stringify!(dummy) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip__bindgen_ty_1), "::", stringify!(pic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ioapic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip__bindgen_ty_1), "::", stringify!(ioapic) ) ); } impl Default for kvm_irqchip__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() } } } impl ::std::fmt::Debug for kvm_irqchip__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irqchip__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irqchip() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 520usize, concat!("Size of: ", stringify!(kvm_irqchip)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irqchip)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).chip_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(chip_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).chip) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irqchip), "::", stringify!(chip) ) ); } impl Default for kvm_irqchip { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irqchip { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irqchip {{ chip_id: {:?}, pad: {:?}, chip: {:?} }}", self.chip_id, self.pad, self.chip ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_pit_config { pub flags: __u32, pub pad: [__u32; 15usize], } #[test] fn bindgen_test_layout_kvm_pit_config() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_pit_config)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_pit_config)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_pit_config), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_pit_config), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_hyperv_exit { pub type_: __u32, pub pad1: __u32, pub u: kvm_hyperv_exit__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_hyperv_exit__bindgen_ty_1 { pub synic: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1, pub hcall: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2, pub syndbg: kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1 { pub msr: __u32, pub pad2: __u32, pub control: __u64, pub evt_page: __u64, pub msg_page: __u64, } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 32usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(pad2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).evt_page) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(evt_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msg_page) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(msg_page) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2 { pub input: __u64, pub result: __u64, pub params: [__u64; 2usize], } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 32usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).input) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(input) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(result) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_2), "::", stringify!(params) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3 { pub msr: __u32, pub pad2: __u32, pub control: __u64, pub status: __u64, pub send_page: __u64, pub recv_page: __u64, pub pending_page: __u64, } #[test] fn bindgen_test_layout_kvm_hyperv_exit__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::(), 48usize, concat!( "Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad2) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(pad2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).status) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(status) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).send_page) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(send_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).recv_page) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(recv_page) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pending_page) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1__bindgen_ty_3), "::", stringify!(pending_page) ) ); } #[test] fn bindgen_test_layout_kvm_hyperv_exit__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_hyperv_exit__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_hyperv_exit__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).synic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(synic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(hcall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).syndbg) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit__bindgen_ty_1), "::", stringify!(syndbg) ) ); } impl Default for kvm_hyperv_exit__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() } } } impl ::std::fmt::Debug for kvm_hyperv_exit__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_hyperv_exit__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_hyperv_exit() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 56usize, concat!("Size of: ", stringify!(kvm_hyperv_exit)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_hyperv_exit)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad1) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(pad1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_hyperv_exit), "::", stringify!(u) ) ); } impl Default for kvm_hyperv_exit { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_hyperv_exit { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_hyperv_exit {{ type: {:?}, pad1: {:?}, u: {:?} }}", self.type_, self.pad1, self.u ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_xen_exit { pub type_: __u32, pub u: kvm_xen_exit__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_xen_exit__bindgen_ty_1 { pub hcall: kvm_xen_exit__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_xen_exit__bindgen_ty_1__bindgen_ty_1 { pub longmode: __u32, pub cpl: __u32, pub input: __u64, pub result: __u64, pub params: [__u64; 6usize], } #[test] fn bindgen_test_layout_kvm_xen_exit__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::(), 72usize, concat!( "Size of: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).longmode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(longmode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cpl) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(cpl) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).input) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(input) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).result) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(result) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1__bindgen_ty_1), "::", stringify!(params) ) ); } #[test] fn bindgen_test_layout_kvm_xen_exit__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_xen_exit__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_exit__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit__bindgen_ty_1), "::", stringify!(hcall) ) ); } impl Default for kvm_xen_exit__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() } } } impl ::std::fmt::Debug for kvm_xen_exit__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_xen_exit__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_xen_exit() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 80usize, concat!("Size of: ", stringify!(kvm_xen_exit)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_xen_exit)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_xen_exit), "::", stringify!(u) ) ); } impl Default for kvm_xen_exit { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_xen_exit { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_xen_exit {{ type: {:?}, u: {:?} }}", self.type_, self.u ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run { pub request_interrupt_window: __u8, pub immediate_exit: __u8, pub padding1: [__u8; 6usize], pub exit_reason: __u32, pub ready_for_interrupt_injection: __u8, pub if_flag: __u8, pub flags: __u16, pub cr8: __u64, pub apic_base: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1, pub kvm_valid_regs: __u64, pub kvm_dirty_regs: __u64, pub s: kvm_run__bindgen_ty_2, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1 { pub hw: kvm_run__bindgen_ty_1__bindgen_ty_1, pub fail_entry: kvm_run__bindgen_ty_1__bindgen_ty_2, pub ex: kvm_run__bindgen_ty_1__bindgen_ty_3, pub io: kvm_run__bindgen_ty_1__bindgen_ty_4, pub debug: kvm_run__bindgen_ty_1__bindgen_ty_5, pub mmio: kvm_run__bindgen_ty_1__bindgen_ty_6, pub iocsr_io: kvm_run__bindgen_ty_1__bindgen_ty_7, pub hypercall: kvm_run__bindgen_ty_1__bindgen_ty_8, pub tpr_access: kvm_run__bindgen_ty_1__bindgen_ty_9, pub s390_sieic: kvm_run__bindgen_ty_1__bindgen_ty_10, pub s390_reset_flags: __u64, pub s390_ucontrol: kvm_run__bindgen_ty_1__bindgen_ty_11, pub dcr: kvm_run__bindgen_ty_1__bindgen_ty_12, pub internal: kvm_run__bindgen_ty_1__bindgen_ty_13, pub emulation_failure: kvm_run__bindgen_ty_1__bindgen_ty_14, pub osi: kvm_run__bindgen_ty_1__bindgen_ty_15, pub papr_hcall: kvm_run__bindgen_ty_1__bindgen_ty_16, pub s390_tsch: kvm_run__bindgen_ty_1__bindgen_ty_17, pub epr: kvm_run__bindgen_ty_1__bindgen_ty_18, pub system_event: kvm_run__bindgen_ty_1__bindgen_ty_19, pub s390_stsi: kvm_run__bindgen_ty_1__bindgen_ty_20, pub eoi: kvm_run__bindgen_ty_1__bindgen_ty_21, pub hyperv: kvm_hyperv_exit, pub arm_nisv: kvm_run__bindgen_ty_1__bindgen_ty_22, pub msr: kvm_run__bindgen_ty_1__bindgen_ty_23, pub xen: kvm_xen_exit, pub riscv_sbi: kvm_run__bindgen_ty_1__bindgen_ty_24, pub riscv_csr: kvm_run__bindgen_ty_1__bindgen_ty_25, pub notify: kvm_run__bindgen_ty_1__bindgen_ty_26, pub memory_fault: kvm_run__bindgen_ty_1__bindgen_ty_27, pub padding: [::std::os::raw::c_char; 256usize], } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_1 { pub hardware_exit_reason: __u64, } #[test] fn bindgen_test_layout_kvm_run__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::(), 8usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hardware_exit_reason) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_1), "::", stringify!(hardware_exit_reason) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_2 { pub hardware_entry_failure_reason: __u64, pub cpu: __u32, } #[test] fn bindgen_test_layout_kvm_run__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::(), 16usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hardware_entry_failure_reason) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2), "::", stringify!(hardware_entry_failure_reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cpu) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_2), "::", stringify!(cpu) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_3 { pub exception: __u32, pub error_code: __u32, } #[test] fn bindgen_test_layout_kvm_run__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::(), 8usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exception) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3), "::", stringify!(exception) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error_code) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_3), "::", stringify!(error_code) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_4 { pub direction: __u8, pub size: __u8, pub port: __u16, pub count: __u32, pub data_offset: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_4() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_4)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(direction) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(count) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_4), "::", stringify!(data_offset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_5 { pub arch: kvm_debug_exit_arch, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_5() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_5)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_5) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_5), "::", stringify!(arch) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_6 { pub phys_addr: __u64, pub data: [__u8; 8usize], pub len: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_6() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_6)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_6), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_7 { pub phys_addr: __u64, pub data: [__u8; 8usize], pub len: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_7() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_7)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_7), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_8 { pub nr: __u64, pub args: [__u64; 6usize], pub ret: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 { pub longmode: __u32, pub flags: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).longmode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1), "::", stringify!(longmode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1), "::", stringify!(flags) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_8__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_8() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 56usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_8), "::", stringify!(ret) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_8 {{ nr: {:?}, args: {:?}, ret: {:?}, __bindgen_anon_1: {:?} }}" , self . nr , self . args , self . ret , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_9 { pub rip: __u64, pub is_write: __u32, pub pad: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_9() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_9)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).rip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(rip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(is_write) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_9), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_10 { pub icptcode: __u8, pub ipa: __u16, pub ipb: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_10() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).icptcode) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(icptcode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipa) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(ipa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipb) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_10), "::", stringify!(ipb) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_11 { pub trans_exc_code: __u64, pub pgm_code: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_11() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_11) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).trans_exc_code) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11), "::", stringify!(trans_exc_code) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pgm_code) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_11), "::", stringify!(pgm_code) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_12 { pub dcrn: __u32, pub data: __u32, pub is_write: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_12() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dcrn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(dcrn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).is_write) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_12), "::", stringify!(is_write) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_13 { pub suberror: __u32, pub ndata: __u32, pub data: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_13() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 136usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).suberror) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(suberror) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(ndata) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_13), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14 { pub suberror: __u32, pub ndata: __u32, pub flags: __u64, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 { pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1, } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 { pub insn_size: __u8, pub insn_bytes: [__u8; 15usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit< kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1, > = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 16usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).insn_size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1), "::", stringify!(insn_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).insn_bytes) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1), "::", stringify!(insn_bytes) ) ); } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1() { assert_eq!( ::std::mem::size_of::(), 16usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_14() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_14) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).suberror) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(suberror) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(ndata) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_14), "::", stringify!(flags) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_14 {{ suberror: {:?}, ndata: {:?}, flags: {:?}, __bindgen_anon_1: {:?} }}" , self . suberror , self . ndata , self . flags , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_15 { pub gprs: [__u64; 32usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_15() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 256usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gprs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_15), "::", stringify!(gprs) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_16 { pub nr: __u64, pub ret: __u64, pub args: [__u64; 9usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_16() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 88usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(ret) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_16), "::", stringify!(args) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_17 { pub subchannel_id: __u16, pub subchannel_nr: __u16, pub io_int_parm: __u32, pub io_int_word: __u32, pub ipb: __u32, pub dequeued: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_17() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 20usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).subchannel_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(subchannel_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).subchannel_nr) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(subchannel_nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io_int_parm) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(io_int_parm) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io_int_word) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(io_int_word) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ipb) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(ipb) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dequeued) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_17), "::", stringify!(dequeued) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_18 { pub epr: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_18() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_18) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_18) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).epr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_18), "::", stringify!(epr) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_19 { pub type_: __u32, pub ndata: __u32, pub __bindgen_anon_1: kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 { pub flags: __u64, pub data: [__u64; 16usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 128usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1), "::", stringify!(data) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_run__bindgen_ty_1__bindgen_ty_19__bindgen_ty_1 {{ union }}" ) } } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_19() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 136usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ndata) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_19), "::", stringify!(ndata) ) ); } impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_19 {{ type: {:?}, ndata: {:?}, __bindgen_anon_1: {:?} }}" , self . type_ , self . ndata , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_20 { pub addr: __u64, pub ar: __u8, pub reserved: __u8, pub fc: __u8, pub sel1: __u8, pub sel2: __u16, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_20() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_20) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ar) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(ar) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 9usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(reserved) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fc) as usize - ptr as usize }, 10usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(fc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sel1) as usize - ptr as usize }, 11usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(sel1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sel2) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_20), "::", stringify!(sel2) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_21 { pub vector: __u8, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_21() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 1usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21) ) ); assert_eq!( ::std::mem::align_of::(), 1usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vector) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_21), "::", stringify!(vector) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_22 { pub esr_iss: __u64, pub fault_ipa: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_22() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_22) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).esr_iss) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22), "::", stringify!(esr_iss) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fault_ipa) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_22), "::", stringify!(fault_ipa) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_23 { pub error: __u8, pub pad: [__u8; 7usize], pub reason: __u32, pub index: __u32, pub data: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_23() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_23) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).error) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(error) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reason) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(index) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_23), "::", stringify!(data) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_24 { pub extension_id: ::std::os::raw::c_ulong, pub function_id: ::std::os::raw::c_ulong, pub args: [::std::os::raw::c_ulong; 6usize], pub ret: [::std::os::raw::c_ulong; 2usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_24() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 80usize, concat!( "Size of: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).extension_id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(extension_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).function_id) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(function_id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret) as usize - ptr as usize }, 64usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_24), "::", stringify!(ret) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_25 { pub csr_num: ::std::os::raw::c_ulong, pub new_value: ::std::os::raw::c_ulong, pub write_mask: ::std::os::raw::c_ulong, pub ret_value: ::std::os::raw::c_ulong, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_25() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_25) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).csr_num) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(csr_num) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).new_value) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(new_value) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).write_mask) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(write_mask) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ret_value) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_25), "::", stringify!(ret_value) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_26 { pub flags: __u32, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_26() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_26) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_26) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_26), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_run__bindgen_ty_1__bindgen_ty_27 { pub flags: __u64, pub gpa: __u64, pub size: __u64, } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1__bindgen_ty_27() { 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!(kvm_run__bindgen_ty_1__bindgen_ty_27) ) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gpa) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(gpa) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1__bindgen_ty_27), "::", stringify!(size) ) ); } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 256usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hw) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hw) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fail_entry) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(fail_entry) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ex) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(ex) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).io) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(io) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).debug) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(debug) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mmio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(mmio) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).iocsr_io) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(iocsr_io) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hypercall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hypercall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tpr_access) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(tpr_access) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_sieic) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_sieic) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_reset_flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_reset_flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_ucontrol) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_ucontrol) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dcr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(dcr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).internal) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(internal) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).emulation_failure) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(emulation_failure) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).osi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(osi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).papr_hcall) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(papr_hcall) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_tsch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_tsch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).epr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(epr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).system_event) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(system_event) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s390_stsi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(s390_stsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).eoi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(eoi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hyperv) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(hyperv) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arm_nisv) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(arm_nisv) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(msr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xen) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(xen) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).riscv_sbi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(riscv_sbi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).riscv_csr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(riscv_csr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).notify) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(notify) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).memory_fault) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(memory_fault) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_1), "::", stringify!(padding) ) ); } impl Default for kvm_run__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() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_run__bindgen_ty_1 {{ union }}") } } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_run__bindgen_ty_2 { pub regs: kvm_sync_regs, pub padding: [::std::os::raw::c_char; 2048usize], } #[test] fn bindgen_test_layout_kvm_run__bindgen_ty_2() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2048usize, concat!("Size of: ", stringify!(kvm_run__bindgen_ty_2)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run__bindgen_ty_2)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).regs) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_2), "::", stringify!(regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run__bindgen_ty_2), "::", stringify!(padding) ) ); } impl Default for kvm_run__bindgen_ty_2 { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run__bindgen_ty_2 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_run__bindgen_ty_2 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_run() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 2352usize, concat!("Size of: ", stringify!(kvm_run)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_run)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).request_interrupt_window) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(request_interrupt_window) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).immediate_exit) as usize - ptr as usize }, 1usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(immediate_exit) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding1) as usize - ptr as usize }, 2usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(padding1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exit_reason) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(exit_reason) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ready_for_interrupt_injection) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(ready_for_interrupt_injection) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).if_flag) as usize - ptr as usize }, 13usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(if_flag) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 14usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cr8) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(cr8) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).apic_base) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(apic_base) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).kvm_valid_regs) as usize - ptr as usize }, 288usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(kvm_valid_regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).kvm_dirty_regs) as usize - ptr as usize }, 296usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(kvm_dirty_regs) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).s) as usize - ptr as usize }, 304usize, concat!( "Offset of field: ", stringify!(kvm_run), "::", stringify!(s) ) ); } impl Default for kvm_run { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_run { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_run {{ request_interrupt_window: {:?}, immediate_exit: {:?}, padding1: {:?}, exit_reason: {:?}, ready_for_interrupt_injection: {:?}, if_flag: {:?}, flags: {:?}, cr8: {:?}, apic_base: {:?}, __bindgen_anon_1: {:?}, kvm_valid_regs: {:?}, kvm_dirty_regs: {:?}, s: {:?} }}" , self . request_interrupt_window , self . immediate_exit , self . padding1 , self . exit_reason , self . ready_for_interrupt_injection , self . if_flag , self . flags , self . cr8 , self . apic_base , self . __bindgen_anon_1 , self . kvm_valid_regs , self . kvm_dirty_regs , self . s) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_coalesced_mmio_zone { pub addr: __u64, pub size: __u32, pub __bindgen_anon_1: kvm_coalesced_mmio_zone__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_coalesced_mmio_zone__bindgen_ty_1 { pub pad: __u32, pub pio: __u32, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_zone__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!(kvm_coalesced_mmio_zone__bindgen_ty_1) ) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone__bindgen_ty_1), "::", stringify!(pio) ) ); } impl Default for kvm_coalesced_mmio_zone__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() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_zone__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_coalesced_mmio_zone__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_zone() { 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!(kvm_coalesced_mmio_zone)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio_zone)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_zone), "::", stringify!(size) ) ); } impl Default for kvm_coalesced_mmio_zone { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_zone { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_coalesced_mmio_zone {{ addr: {:?}, size: {:?}, __bindgen_anon_1: {:?} }}", self.addr, self.size, self.__bindgen_anon_1 ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_coalesced_mmio { pub phys_addr: __u64, pub len: __u32, pub __bindgen_anon_1: kvm_coalesced_mmio__bindgen_ty_1, pub data: [__u8; 8usize], } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_coalesced_mmio__bindgen_ty_1 { pub pad: __u32, pub pio: __u32, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio__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!(kvm_coalesced_mmio__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_coalesced_mmio__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pio) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio__bindgen_ty_1), "::", stringify!(pio) ) ); } impl Default for kvm_coalesced_mmio__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() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_coalesced_mmio__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_coalesced_mmio() { 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!(kvm_coalesced_mmio)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).phys_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(phys_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio), "::", stringify!(data) ) ); } impl Default for kvm_coalesced_mmio { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_coalesced_mmio {{ phys_addr: {:?}, len: {:?}, __bindgen_anon_1: {:?}, data: {:?} }}" , self . phys_addr , self . len , self . __bindgen_anon_1 , self . data) } } #[repr(C)] pub struct kvm_coalesced_mmio_ring { pub first: __u32, pub last: __u32, pub coalesced_mmio: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_coalesced_mmio_ring() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_coalesced_mmio_ring)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_coalesced_mmio_ring)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).first) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(first) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).last) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(last) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).coalesced_mmio) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_coalesced_mmio_ring), "::", stringify!(coalesced_mmio) ) ); } impl Default for kvm_coalesced_mmio_ring { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_coalesced_mmio_ring { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_coalesced_mmio_ring {{ first: {:?}, last: {:?}, coalesced_mmio: {:?} }}", self.first, self.last, self.coalesced_mmio ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_translation { pub linear_address: __u64, pub physical_address: __u64, pub valid: __u8, pub writeable: __u8, pub usermode: __u8, pub pad: [__u8; 5usize], } #[test] fn bindgen_test_layout_kvm_translation() { 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!(kvm_translation)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_translation)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).linear_address) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(linear_address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).physical_address) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(physical_address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).valid) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(valid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).writeable) as usize - ptr as usize }, 17usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(writeable) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).usermode) as usize - ptr as usize }, 18usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(usermode) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 19usize, concat!( "Offset of field: ", stringify!(kvm_translation), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_interrupt { pub irq: __u32, } #[test] fn bindgen_test_layout_kvm_interrupt() { 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!(kvm_interrupt)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_interrupt)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_interrupt), "::", stringify!(irq) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_dirty_log { pub slot: __u32, pub padding1: __u32, pub __bindgen_anon_1: kvm_dirty_log__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_dirty_log__bindgen_ty_1 { pub dirty_bitmap: *mut ::std::os::raw::c_void, pub padding2: __u64, } #[test] fn bindgen_test_layout_kvm_dirty_log__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_dirty_log__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_log__bindgen_ty_1)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dirty_bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log__bindgen_ty_1), "::", stringify!(dirty_bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding2) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log__bindgen_ty_1), "::", stringify!(padding2) ) ); } impl Default for kvm_dirty_log__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() } } } impl ::std::fmt::Debug for kvm_dirty_log__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_dirty_log__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_dirty_log() { 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!(kvm_dirty_log)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_log)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding1) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_dirty_log), "::", stringify!(padding1) ) ); } impl Default for kvm_dirty_log { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_dirty_log { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_dirty_log {{ slot: {:?}, padding1: {:?}, __bindgen_anon_1: {:?} }}", self.slot, self.padding1, self.__bindgen_anon_1 ) } } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_clear_dirty_log { pub slot: __u32, pub num_pages: __u32, pub first_page: __u64, pub __bindgen_anon_1: kvm_clear_dirty_log__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_clear_dirty_log__bindgen_ty_1 { pub dirty_bitmap: *mut ::std::os::raw::c_void, pub padding2: __u64, } #[test] fn bindgen_test_layout_kvm_clear_dirty_log__bindgen_ty_1() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_clear_dirty_log__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).dirty_bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1), "::", stringify!(dirty_bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).padding2) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log__bindgen_ty_1), "::", stringify!(padding2) ) ); } impl Default for kvm_clear_dirty_log__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() } } } impl ::std::fmt::Debug for kvm_clear_dirty_log__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_clear_dirty_log__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_clear_dirty_log() { 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!(kvm_clear_dirty_log)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_clear_dirty_log)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_pages) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(num_pages) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).first_page) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_clear_dirty_log), "::", stringify!(first_page) ) ); } impl Default for kvm_clear_dirty_log { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_clear_dirty_log { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_clear_dirty_log {{ slot: {:?}, num_pages: {:?}, first_page: {:?}, __bindgen_anon_1: {:?} }}" , self . slot , self . num_pages , self . first_page , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_signal_mask { pub len: __u32, pub sigset: __IncompleteArrayField<__u8>, } #[test] fn bindgen_test_layout_kvm_signal_mask() { 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!(kvm_signal_mask)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_signal_mask)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_signal_mask), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sigset) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_signal_mask), "::", stringify!(sigset) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_tpr_access_ctl { pub enabled: __u32, pub flags: __u32, pub reserved: [__u32; 8usize], } #[test] fn bindgen_test_layout_kvm_tpr_access_ctl() { 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!(kvm_tpr_access_ctl)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_tpr_access_ctl)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).enabled) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(enabled) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_tpr_access_ctl), "::", stringify!(reserved) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vapic_addr { pub vapic_addr: __u64, } #[test] fn bindgen_test_layout_kvm_vapic_addr() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_vapic_addr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_vapic_addr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vapic_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vapic_addr), "::", stringify!(vapic_addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_mp_state { pub mp_state: __u32, } #[test] fn bindgen_test_layout_kvm_mp_state() { 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!(kvm_mp_state)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_mp_state)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mp_state) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_mp_state), "::", stringify!(mp_state) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_guest_debug { pub control: __u32, pub pad: __u32, pub arch: kvm_guest_debug_arch, } #[test] fn bindgen_test_layout_kvm_guest_debug() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 72usize, concat!("Size of: ", stringify!(kvm_guest_debug)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_guest_debug)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).control) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(control) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).arch) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_guest_debug), "::", stringify!(arch) ) ); } pub const kvm_ioeventfd_flag_nr_datamatch: _bindgen_ty_1 = 0; pub const kvm_ioeventfd_flag_nr_pio: _bindgen_ty_1 = 1; pub const kvm_ioeventfd_flag_nr_deassign: _bindgen_ty_1 = 2; pub const kvm_ioeventfd_flag_nr_virtio_ccw_notify: _bindgen_ty_1 = 3; pub const kvm_ioeventfd_flag_nr_fast_mmio: _bindgen_ty_1 = 4; pub const kvm_ioeventfd_flag_nr_max: _bindgen_ty_1 = 5; pub type _bindgen_ty_1 = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_ioeventfd { pub datamatch: __u64, pub addr: __u64, pub len: __u32, pub fd: __s32, pub flags: __u32, pub pad: [__u8; 36usize], } #[test] fn bindgen_test_layout_kvm_ioeventfd() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_ioeventfd)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_ioeventfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).datamatch) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(datamatch) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(len) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_ioeventfd), "::", stringify!(pad) ) ); } impl Default for kvm_ioeventfd { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct kvm_enable_cap { pub cap: __u32, pub flags: __u32, pub args: [__u64; 4usize], pub pad: [__u8; 64usize], } #[test] fn bindgen_test_layout_kvm_enable_cap() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 104usize, concat!("Size of: ", stringify!(kvm_enable_cap)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_enable_cap)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).cap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(cap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).args) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(args) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 40usize, concat!( "Offset of field: ", stringify!(kvm_enable_cap), "::", stringify!(pad) ) ); } impl Default for kvm_enable_cap { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_irqchip { pub irqchip: __u32, pub pin: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_irqchip() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing_irqchip)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_irqchip)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irqchip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_irqchip), "::", stringify!(irqchip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pin) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_irqchip), "::", stringify!(pin) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_routing_msi { pub address_lo: __u32, pub address_hi: __u32, pub data: __u32, pub __bindgen_anon_1: kvm_irq_routing_msi__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_routing_msi__bindgen_ty_1 { pub pad: __u32, pub devid: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_msi__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!(kvm_irq_routing_msi__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!( "Alignment of ", stringify!(kvm_irq_routing_msi__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi__bindgen_ty_1), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).devid) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi__bindgen_ty_1), "::", stringify!(devid) ) ); } impl Default for kvm_irq_routing_msi__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() } } } impl ::std::fmt::Debug for kvm_irq_routing_msi__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_routing_msi__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_routing_msi() { 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!(kvm_irq_routing_msi)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_msi)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_lo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(address_lo) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_hi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(address_hi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_msi), "::", stringify!(data) ) ); } impl Default for kvm_irq_routing_msi { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing_msi { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write ! (f , "kvm_irq_routing_msi {{ address_lo: {:?}, address_hi: {:?}, data: {:?}, __bindgen_anon_1: {:?} }}" , self . address_lo , self . address_hi , self . data , self . __bindgen_anon_1) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_s390_adapter { pub ind_addr: __u64, pub summary_addr: __u64, pub ind_offset: __u64, pub summary_offset: __u32, pub adapter_id: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_s390_adapter() { 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!(kvm_irq_routing_s390_adapter)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing_s390_adapter)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ind_addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(ind_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).summary_addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(summary_addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).ind_offset) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(ind_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).summary_offset) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(summary_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).adapter_id) as usize - ptr as usize }, 28usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_s390_adapter), "::", stringify!(adapter_id) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_hv_sint { pub vcpu: __u32, pub sint: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_hv_sint() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing_hv_sint)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_hv_sint)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_hv_sint), "::", stringify!(vcpu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).sint) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_hv_sint), "::", stringify!(sint) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irq_routing_xen_evtchn { pub port: __u32, pub vcpu: __u32, pub priority: __u32, } #[test] fn bindgen_test_layout_kvm_irq_routing_xen_evtchn() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(kvm_irq_routing_xen_evtchn)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irq_routing_xen_evtchn)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(port) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).vcpu) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(vcpu) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_xen_evtchn), "::", stringify!(priority) ) ); } #[repr(C)] #[derive(Copy, Clone)] pub struct kvm_irq_routing_entry { pub gsi: __u32, pub type_: __u32, pub flags: __u32, pub pad: __u32, pub u: kvm_irq_routing_entry__bindgen_ty_1, } #[repr(C)] #[derive(Copy, Clone)] pub union kvm_irq_routing_entry__bindgen_ty_1 { pub irqchip: kvm_irq_routing_irqchip, pub msi: kvm_irq_routing_msi, pub adapter: kvm_irq_routing_s390_adapter, pub hv_sint: kvm_irq_routing_hv_sint, pub xen_evtchn: kvm_irq_routing_xen_evtchn, pub pad: [__u32; 8usize], } #[test] fn bindgen_test_layout_kvm_irq_routing_entry__bindgen_ty_1() { 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!(kvm_irq_routing_entry__bindgen_ty_1)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!( "Alignment of ", stringify!(kvm_irq_routing_entry__bindgen_ty_1) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).irqchip) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(irqchip) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).msi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(msi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).adapter) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(adapter) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).hv_sint) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(hv_sint) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).xen_evtchn) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(xen_evtchn) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry__bindgen_ty_1), "::", stringify!(pad) ) ); } impl Default for kvm_irq_routing_entry__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() } } } impl ::std::fmt::Debug for kvm_irq_routing_entry__bindgen_ty_1 { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!(f, "kvm_irq_routing_entry__bindgen_ty_1 {{ union }}") } } #[test] fn bindgen_test_layout_kvm_irq_routing_entry() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_irq_routing_entry)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing_entry)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gsi) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(gsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(pad) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing_entry), "::", stringify!(u) ) ); } impl Default for kvm_irq_routing_entry { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing_entry { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_routing_entry {{ gsi: {:?}, type: {:?}, flags: {:?}, pad: {:?}, u: {:?} }}", self.gsi, self.type_, self.flags, self.pad, self.u ) } } #[repr(C)] pub struct kvm_irq_routing { pub nr: __u32, pub flags: __u32, pub entries: __IncompleteArrayField, } #[test] fn bindgen_test_layout_kvm_irq_routing() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_irq_routing)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_irq_routing)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(nr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irq_routing), "::", stringify!(entries) ) ); } impl Default for kvm_irq_routing { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); unsafe { ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); s.assume_init() } } } impl ::std::fmt::Debug for kvm_irq_routing { fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { write!( f, "kvm_irq_routing {{ nr: {:?}, flags: {:?}, entries: {:?} }}", self.nr, self.flags, self.entries ) } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_irqfd { pub fd: __u32, pub gsi: __u32, pub flags: __u32, pub resamplefd: __u32, pub pad: [__u8; 16usize], } #[test] fn bindgen_test_layout_kvm_irqfd() { 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!(kvm_irqfd)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_irqfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).gsi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(gsi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).resamplefd) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(resamplefd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_irqfd), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr( feature = "serde", derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) )] pub struct kvm_clock_data { pub clock: __u64, pub flags: __u32, pub pad0: __u32, pub realtime: __u64, pub host_tsc: __u64, pub pad: [__u32; 4usize], } #[test] fn bindgen_test_layout_kvm_clock_data() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 48usize, concat!("Size of: ", stringify!(kvm_clock_data)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_clock_data)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).clock) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(clock) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad0) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(pad0) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).realtime) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(realtime) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).host_tsc) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(host_tsc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 32usize, concat!( "Offset of field: ", stringify!(kvm_clock_data), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_config_tlb { pub params: __u64, pub array: __u64, pub mmu_type: __u32, pub array_len: __u32, } #[test] fn bindgen_test_layout_kvm_config_tlb() { 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!(kvm_config_tlb)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_config_tlb)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).params) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(params) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(array) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).mmu_type) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(mmu_type) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).array_len) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_config_tlb), "::", stringify!(array_len) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_dirty_tlb { pub bitmap: __u64, pub num_dirty: __u32, } #[test] fn bindgen_test_layout_kvm_dirty_tlb() { 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!(kvm_dirty_tlb)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_tlb)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bitmap) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_tlb), "::", stringify!(bitmap) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_dirty) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_dirty_tlb), "::", stringify!(num_dirty) ) ); } #[repr(C)] #[derive(Debug, Default)] pub struct kvm_reg_list { pub n: __u64, pub reg: __IncompleteArrayField<__u64>, } #[test] fn bindgen_test_layout_kvm_reg_list() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_reg_list)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_reg_list)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).n) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_reg_list), "::", stringify!(n) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reg) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_reg_list), "::", stringify!(reg) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_one_reg { pub id: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_one_reg() { 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!(kvm_one_reg)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_one_reg)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_one_reg), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_one_reg), "::", stringify!(addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_msi { pub address_lo: __u32, pub address_hi: __u32, pub data: __u32, pub flags: __u32, pub devid: __u32, pub pad: [__u8; 12usize], } #[test] fn bindgen_test_layout_kvm_msi() { 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!(kvm_msi)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_msi)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_lo) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(address_lo) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address_hi) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(address_hi) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(data) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).devid) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(devid) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_msi), "::", stringify!(pad) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_arm_device_addr { pub id: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_arm_device_addr() { 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!(kvm_arm_device_addr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_arm_device_addr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_arm_device_addr), "::", stringify!(id) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_arm_device_addr), "::", stringify!(addr) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_create_device { pub type_: __u32, pub fd: __u32, pub flags: __u32, } #[test] fn bindgen_test_layout_kvm_create_device() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 12usize, concat!("Size of: ", stringify!(kvm_create_device)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_create_device)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(type_) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(fd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_create_device), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_device_attr { pub flags: __u32, pub group: __u32, pub attr: __u64, pub addr: __u64, } #[test] fn bindgen_test_layout_kvm_device_attr() { 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!(kvm_device_attr)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_device_attr)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).group) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(group) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).attr) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(attr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_device_attr), "::", stringify!(addr) ) ); } pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_20: kvm_device_type = 1; pub const kvm_device_type_KVM_DEV_TYPE_FSL_MPIC_42: kvm_device_type = 2; pub const kvm_device_type_KVM_DEV_TYPE_XICS: kvm_device_type = 3; pub const kvm_device_type_KVM_DEV_TYPE_VFIO: kvm_device_type = 4; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2: kvm_device_type = 5; pub const kvm_device_type_KVM_DEV_TYPE_FLIC: kvm_device_type = 6; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3: kvm_device_type = 7; pub const kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_ITS: kvm_device_type = 8; pub const kvm_device_type_KVM_DEV_TYPE_XIVE: kvm_device_type = 9; pub const kvm_device_type_KVM_DEV_TYPE_ARM_PV_TIME: kvm_device_type = 10; pub const kvm_device_type_KVM_DEV_TYPE_RISCV_AIA: kvm_device_type = 11; pub const kvm_device_type_KVM_DEV_TYPE_MAX: kvm_device_type = 12; pub type kvm_device_type = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_vfio_spapr_tce { pub groupfd: __s32, pub tablefd: __s32, } #[test] fn bindgen_test_layout_kvm_vfio_spapr_tce() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 8usize, concat!("Size of: ", stringify!(kvm_vfio_spapr_tce)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_vfio_spapr_tce)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).groupfd) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_vfio_spapr_tce), "::", stringify!(groupfd) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).tablefd) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_vfio_spapr_tce), "::", stringify!(tablefd) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_enc_region { pub addr: __u64, pub size: __u64, } #[test] fn bindgen_test_layout_kvm_enc_region() { 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!(kvm_enc_region)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_enc_region)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_enc_region), "::", stringify!(addr) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_enc_region), "::", stringify!(size) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_dirty_gfn { pub flags: __u32, pub slot: __u32, pub offset: __u64, } #[test] fn bindgen_test_layout_kvm_dirty_gfn() { 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!(kvm_dirty_gfn)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_dirty_gfn)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).slot) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(slot) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_dirty_gfn), "::", stringify!(offset) ) ); } #[doc = " struct kvm_stats_header - Header of per vm/vcpu binary statistics data.\n @flags: Some extra information for header, always 0 for now.\n @name_size: The size in bytes of the memory which contains statistics\n name string including trailing '\\0'. The memory is allocated\n at the send of statistics descriptor.\n @num_desc: The number of statistics the vm or vcpu has.\n @id_offset: The offset of the vm/vcpu stats' id string in the file pointed\n by vm/vcpu stats fd.\n @desc_offset: The offset of the vm/vcpu stats' descriptor block in the file\n pointd by vm/vcpu stats fd.\n @data_offset: The offset of the vm/vcpu stats' data block in the file\n pointed by vm/vcpu stats fd.\n\n This is the header userspace needs to read from stats fd before any other\n readings. It is used by userspace to discover all the information about the\n vm/vcpu's binary statistics.\n Userspace reads this header from the start of the vm/vcpu's stats fd."] #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_stats_header { pub flags: __u32, pub name_size: __u32, pub num_desc: __u32, pub id_offset: __u32, pub desc_offset: __u32, pub data_offset: __u32, } #[test] fn bindgen_test_layout_kvm_stats_header() { 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!(kvm_stats_header)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_stats_header)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).name_size) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(name_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).num_desc) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(num_desc) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).id_offset) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(id_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).desc_offset) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(desc_offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).data_offset) as usize - ptr as usize }, 20usize, concat!( "Offset of field: ", stringify!(kvm_stats_header), "::", stringify!(data_offset) ) ); } #[doc = " struct kvm_stats_desc - Descriptor of a KVM statistics.\n @flags: Annotations of the stats, like type, unit, etc.\n @exponent: Used together with @flags to determine the unit.\n @size: The number of data items for this stats.\n Every data item is of type __u64.\n @offset: The offset of the stats to the start of stat structure in\n structure kvm or kvm_vcpu.\n @bucket_size: A parameter value used for histogram stats. It is only used\n\t\tfor linear histogram stats, specifying the size of the bucket;\n @name: The name string for the stats. Its size is indicated by the\n &kvm_stats_header->name_size."] #[repr(C)] #[derive(Debug, Default)] pub struct kvm_stats_desc { pub flags: __u32, pub exponent: __s16, pub size: __u16, pub offset: __u32, pub bucket_size: __u32, pub name: __IncompleteArrayField<::std::os::raw::c_char>, } #[test] fn bindgen_test_layout_kvm_stats_desc() { 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!(kvm_stats_desc)) ); assert_eq!( ::std::mem::align_of::(), 4usize, concat!("Alignment of ", stringify!(kvm_stats_desc)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).exponent) as usize - ptr as usize }, 4usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(exponent) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 6usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(offset) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).bucket_size) as usize - ptr as usize }, 12usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(bucket_size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_stats_desc), "::", stringify!(name) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_memory_attributes { pub address: __u64, pub size: __u64, pub attributes: __u64, pub flags: __u64, } #[test] fn bindgen_test_layout_kvm_memory_attributes() { 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!(kvm_memory_attributes)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_memory_attributes)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).address) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(address) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).attributes) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(attributes) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 24usize, concat!( "Offset of field: ", stringify!(kvm_memory_attributes), "::", stringify!(flags) ) ); } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct kvm_create_guest_memfd { pub size: __u64, pub flags: __u64, pub reserved: [__u64; 6usize], } #[test] fn bindgen_test_layout_kvm_create_guest_memfd() { const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); let ptr = UNINIT.as_ptr(); assert_eq!( ::std::mem::size_of::(), 64usize, concat!("Size of: ", stringify!(kvm_create_guest_memfd)) ); assert_eq!( ::std::mem::align_of::(), 8usize, concat!("Alignment of ", stringify!(kvm_create_guest_memfd)) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, 0usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(size) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, 8usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(flags) ) ); assert_eq!( unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, 16usize, concat!( "Offset of field: ", stringify!(kvm_create_guest_memfd), "::", stringify!(reserved) ) ); } kvm-bindings-0.10.0/src/x86_64/fam_wrappers.rs000064400000000000000000000200261046102023000170530ustar 00000000000000// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 use vmm_sys_util::fam::{FamStruct, FamStructWrapper}; use x86_64::bindings::*; /// Maximum number of CPUID entries that can be returned by a call to KVM ioctls. /// /// See arch/x86/include/asm/kvm_host.h pub const KVM_MAX_CPUID_ENTRIES: usize = 80; /// Maximum number of MSRs KVM supports (See arch/x86/kvm/x86.c). pub const KVM_MAX_MSR_ENTRIES: usize = 256; // Implement the FamStruct trait for kvm_cpuid2. generate_fam_struct_impl!( kvm_cpuid2, kvm_cpuid_entry2, entries, u32, nent, KVM_MAX_CPUID_ENTRIES ); // Implement the PartialEq trait for kvm_cpuid2. // // Note: // This PartialEq implementation should not be used directly, instead FamStructWrapper // should be used. FamStructWrapper provides us with an PartialEq implementation, // and it will determine the entire contents of the entries array. But requires // type T to implement `Default + FamStruct + PartialEq`, so we implement PartialEq here // and only need to determine the header field. impl PartialEq for kvm_cpuid2 { fn eq(&self, other: &kvm_cpuid2) -> bool { // No need to call entries's eq, FamStructWrapper's PartialEq will do it for you self.nent == other.nent && self.padding == other.padding } } /// Wrapper over the `kvm_cpuid2` structure. /// /// The `kvm_cpuid2` structure contains a flexible array member. For details check the /// [KVM API](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt) /// documentation on `kvm_cpuid2`. To provide safe access to /// the array elements, this type is implemented using /// [FamStructWrapper](../vmm_sys_util/fam/struct.FamStructWrapper.html). pub type CpuId = FamStructWrapper; // Implement the FamStruct trait for kvm_msrs. generate_fam_struct_impl!( kvm_msrs, kvm_msr_entry, entries, u32, nmsrs, KVM_MAX_MSR_ENTRIES ); // Implement the PartialEq trait for kvm_msrs. impl PartialEq for kvm_msrs { fn eq(&self, other: &kvm_msrs) -> bool { // No need to call entries's eq, FamStructWrapper's PartialEq will do it for you self.nmsrs == other.nmsrs && self.pad == other.pad } } /// Wrapper over the `kvm_msrs` structure. /// /// The `kvm_msrs` structure contains a flexible array member. For details check the /// [KVM API](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt) /// documentation on `kvm_msrs`. To provide safe access to /// the array elements, this type is implemented using /// [FamStructWrapper](../vmm_sys_util/fam/struct.FamStructWrapper.html). pub type Msrs = FamStructWrapper; // Implement the FamStruct trait for kvm_msr_list. generate_fam_struct_impl!(kvm_msr_list, u32, indices, u32, nmsrs, KVM_MAX_MSR_ENTRIES); // Implement the PartialEq trait for kvm_msr_list. impl PartialEq for kvm_msr_list { fn eq(&self, other: &kvm_msr_list) -> bool { // No need to call entries's eq, FamStructWrapper's PartialEq will do it for you self.nmsrs == other.nmsrs } } /// Wrapper over the `kvm_msr_list` structure. /// /// The `kvm_msr_list` structure contains a flexible array member. For details check the /// [KVM API](https://www.kernel.org/doc/Documentation/virtual/kvm/api.txt) /// documentation on `kvm_msr_list`. To provide safe access to /// the array elements, this type is implemented using /// [FamStructWrapper](../vmm_sys_util/fam/struct.FamStructWrapper.html). pub type MsrList = FamStructWrapper; /// Helper structure to treat post-5.17 [`kvm_xsave`] as a FamStruct. /// /// See also: [`Xsave`]. #[repr(C)] #[derive(Debug, Default)] pub struct kvm_xsave2 { /// The length, in bytes, of the FAM in [`kvm_xsave`]. /// /// Note that `KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2)` returns the size of the entire /// `kvm_xsave` structure, e.g. the sum of header and FAM. Thus, this `len` field /// is equal to `KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2) - 4096`. pub len: usize, pub xsave: kvm_xsave, } // SAFETY: // - `kvm_xsave2` is a POD // - `kvm_xsave2` contains a flexible array member as its final field, due to `kvm_xsave` containing // one, and being `repr(C)` // - `Entry` is a POD unsafe impl FamStruct for kvm_xsave2 { type Entry = __u32; fn len(&self) -> usize { self.len } unsafe fn set_len(&mut self, len: usize) { self.len = len; } fn max_len() -> usize { __u32::MAX as usize } fn as_slice(&self) -> &[::Entry] { let len = self.len(); // SAFETY: By the invariants that the caller of `set_len` has to uphold, `len` matches // the actual in-memory length of the FAM unsafe { self.xsave.extra.as_slice(len) } } fn as_mut_slice(&mut self) -> &mut [::Entry] { let len = self.len(); // SAFETY: By the invariants that the caller of `set_len` has to uphold, `len` matches // the actual in-memory length of the FAM unsafe { self.xsave.extra.as_mut_slice(len) } } } /// Wrapper over the post-5.17 [`kvm_xsave`] structure. /// /// In linux 5.17, kvm_xsave got turned into a FamStruct by adding the flexible "extra" member /// to its definition. However, unlike all other such structs, it does not contain a "length" /// field. Instead, the length of the flexible array member has to be determined by querying /// the [`KVM_CAP_XSAVE2`] capability. This requires access to a VM file descriptor, and thus /// cannot happen in the [`FamStruct::len`] trait method. To work around this, we define a wrapper /// struct that caches the length of a previous `KVM_CHECK_EXTENSION(KVM_CAP_XSAVE2)` call, /// and implement [`FamStruct`] for this wrapper. Then in kvm-ioctls, we can expose a function /// that first queries `KVM_CAP_XSAVE2`, then invokes [`KVM_GET_XSAVE2`] to retrives the `kvm_xsave` /// structure, and finally combine them into the [`kvm_xsave2`] helper structure to be managed as a /// `FamStruct`. pub type Xsave = FamStructWrapper; #[cfg(test)] mod tests { use super::{CpuId, MsrList, Msrs, Xsave}; use x86_64::bindings::kvm_cpuid_entry2; use vmm_sys_util::fam::FamStruct; #[test] fn test_cpuid_eq() { let entries = &[kvm_cpuid_entry2::default(); 2]; let mut wrapper = CpuId::from_entries(entries).unwrap(); assert_eq!(wrapper.as_slice().len(), 2); let mut wrapper2 = wrapper.clone(); assert!(wrapper == wrapper2); wrapper.as_mut_slice()[1].index = 1; assert!(wrapper != wrapper2); wrapper2.as_mut_slice()[1].index = 1; assert!(wrapper == wrapper2); } #[test] fn test_msrs_eq() { let mut wrapper = Msrs::new(2).unwrap(); assert_eq!(wrapper.as_slice().len(), 2); let mut wrapper2 = wrapper.clone(); assert!(wrapper == wrapper2); // SAFETY: We are not modifying the `nmsrs` field unsafe { wrapper.as_mut_fam_struct().pad = 1; } assert!(wrapper != wrapper2); // SAFETY: We are not modifying the `nmsrs` field unsafe { wrapper2.as_mut_fam_struct().pad = 1; } assert!(wrapper == wrapper2); wrapper.as_mut_slice()[1].data = 1; assert!(wrapper != wrapper2); assert!(wrapper.as_slice() != wrapper2.as_slice()); wrapper2.as_mut_slice()[1].data = 1; assert!(wrapper == wrapper2); assert!(wrapper.as_slice() == wrapper2.as_slice()); } #[test] fn test_msrs_list_eq() { let mut wrapper = MsrList::new(1).unwrap(); assert_eq!(wrapper.as_slice().len(), 1); let mut wrapper2 = wrapper.clone(); assert!(wrapper == wrapper2); wrapper.as_mut_slice()[0] = 1; assert!(wrapper != wrapper2); wrapper2.as_mut_slice()[0] = 1; assert!(wrapper == wrapper2); } #[test] fn test_xsave() { let wrapper = Xsave::new(1).unwrap(); assert_eq!(wrapper.as_slice().len(), 1); assert_eq!(wrapper.as_fam_struct_ref().len(), 1); assert_eq!(wrapper.as_fam_struct_ref().len, 1); } } kvm-bindings-0.10.0/src/x86_64/mod.rs000064400000000000000000000006041046102023000151440ustar 00000000000000// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 #[allow(clippy::undocumented_unsafe_blocks)] #[allow(clippy::all)] pub mod bindings; #[cfg(feature = "fam-wrappers")] pub mod fam_wrappers; #[cfg(feature = "serde")] mod serialize; pub use self::bindings::*; #[cfg(feature = "fam-wrappers")] pub use self::fam_wrappers::*; kvm-bindings-0.10.0/src/x86_64/serialize.rs000064400000000000000000000137631046102023000163660ustar 00000000000000// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 use bindings::{ kvm_clock_data, kvm_cpuid2, kvm_cpuid_entry2, kvm_debugregs, kvm_dtable, kvm_irqchip, kvm_irqchip__bindgen_ty_1, kvm_lapic_state, kvm_mp_state, kvm_msr_entry, kvm_msrs, kvm_pit_channel_state, kvm_pit_state2, kvm_regs, kvm_segment, kvm_sregs, kvm_vcpu_events, kvm_xcr, kvm_xcrs, kvm_xsave, }; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use zerocopy::{transmute, AsBytes, FromBytes, FromZeroes}; serde_impls!( kvm_regs, kvm_segment, kvm_dtable, kvm_sregs, kvm_msr_entry, kvm_cpuid_entry2, kvm_pit_channel_state, kvm_pit_state2, kvm_vcpu_events, kvm_debugregs, kvm_xcr, kvm_xcrs, kvm_mp_state, kvm_clock_data, kvm_lapic_state, kvm_msrs, kvm_cpuid2, kvm_xsave, kvm_irqchip ); // SAFETY: zerocopy's derives explicitly disallow deriving for unions where // the fields have different sizes, due to the smaller fields having padding. // Miri however does not complain about these implementations (e.g. about // reading the "padding" for one union field as valid data for a bigger one) unsafe impl FromZeroes for kvm_irqchip__bindgen_ty_1 { fn only_derive_is_allowed_to_implement_this_trait() where Self: Sized, { } } // SAFETY: zerocopy's derives explicitly disallow deriving for unions where // the fields have different sizes, due to the smaller fields having padding. // Miri however does not complain about these implementations (e.g. about // reading the "padding" for one union field as valid data for a bigger one) unsafe impl FromBytes for kvm_irqchip__bindgen_ty_1 { fn only_derive_is_allowed_to_implement_this_trait() where Self: Sized, { } } // SAFETY: zerocopy's derives explicitly disallow deriving for unions where // the fields have different sizes, due to the smaller fields having padding. // Miri however does not complain about these implementations (e.g. about // reading the "padding" for one union field as valid data for a bigger one) unsafe impl AsBytes for kvm_irqchip__bindgen_ty_1 { fn only_derive_is_allowed_to_implement_this_trait() where Self: Sized, { } } #[cfg(test)] mod tests { use super::*; use bindings::*; fn is_serde Deserialize<'de> + Default>() { let serialized = bincode::serialize(&T::default()).unwrap(); let deserialized = bincode::deserialize::(serialized.as_ref()).unwrap(); let serialized_again = bincode::serialize(&deserialized).unwrap(); // Compare the serialized state after a roundtrip, to work around issues with // bindings not implementing `PartialEq`. assert_eq!(serialized, serialized_again); } #[test] fn static_assert_serde_implementations() { // This test statically (= at compile-time) asserts that various bindgen generated // structures implement serde's `Serialize` and `Deserialize` traits. // This is to make sure that we do not accidentally remove those implementations // when regenerating bindings. If this test fails to compile, please add // // #[cfg_attr( // feature = "serde", // derive(zerocopy::AsBytes, zerocopy::FromBytes, zerocopy::FromZeroes) // )] // // to all structures causing compilation errors (we need the zerocopy traits, as the // `Serialize` and `Deserialize` implementations are provided by the `serde_impls!` macro // above, which implements serialization based on zerocopy's `FromBytes` and `AsBytes` // traits that it expects to be derived). // // NOTE: This only include "top-level" items, and does not list out bindgen-anonymous types // (e.g. types like `kvm_vcpu_events__bindgen_ty_5`). These types can change name across // bindgen versions. If after re-adding the derives to all the below items you can compile // errors about anonymous types not implementing `Serialize`/`Deserialize`, please also add // the derives to all anonymous types references in the definitions of the below items. is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); is_serde::(); } fn is_serde_json Deserialize<'de> + Default>() { let serialized = serde_json::to_string(&T::default()).unwrap(); let deserialized = serde_json::from_str::(serialized.as_ref()).unwrap(); let serialized_again = serde_json::to_string(&deserialized).unwrap(); // Compare the serialized state after a roundtrip, to work around issues with // bindings not implementing `PartialEq`. assert_eq!(serialized, serialized_again); } #[test] fn test_json_serde() { is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); is_serde_json::(); } }