diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d98b4c..48babc1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,7 @@ +name: CI + on: push: - pull_request: jobs: rust: @@ -14,8 +15,6 @@ jobs: run: cargo fmt --all -- --check - name: Cargo clippy run: cargo clippy --workspace --all-targets -- -D warnings - - name: Cargo test - run: cargo test --workspace rust-msrv: name: Build-test MSRV (1.74) with minimal crate dependencies @@ -30,6 +29,90 @@ jobs: - uses: dtolnay/rust-toolchain@nightly - name: Generate minimal-version dependencies run: cargo -Zminimal-versions generate-lockfile + # The latest bindgen release has an underspecified proc-macro2 dependency: https://github.com/rust-lang/rust-bindgen/issues/3149 + - name: Update proc-macro2 to 1.0.80 + run: cargo update -p proc-macro2 --precise 1.0.80 - uses: dtolnay/rust-toolchain@1.74.0 - name: Cargo check run: cargo check --workspace --all-targets + + cross: + name: ${{ matrix.name }} (${{ matrix.target }}) + runs-on: ${{ matrix.os }} + env: + PROGRAM: ${{ matrix.cross && 'cross' || 'cargo' }} + strategy: + fail-fast: false + matrix: + include: + - target: x86_64-unknown-linux-gnu + os: ubuntu-latest + name: Linux + cross: false + test: true + + - target: x86_64-apple-darwin + os: macos-latest + name: macOS + cross: false + test: true + + - os: windows-latest + name: Windows + target: x86_64-pc-windows-msvc + cross: false + test: true + + # - os: ubuntu-latest + # name: FreeBSD + # target: x86_64-unknown-freebsd + # cross: true + # test: false + + - target: aarch64-linux-android + os: ubuntu-latest + name: Android + cross: true + test: true + + # - os: ubuntu-latest + # name: OpenWrt + # target: aarch64-unknown-linux-gnu + # cross: true + # test: true + # cargo_args: --features "openwrt" + + # - target: armv7-unknown-linux-gnueabihf + # os: ubuntu-latest + # name: Linux ARMv7 + # cross: true + # test: true + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Bootstrap + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Install cross + run: cargo install cross + if: ${{ matrix.cross }} + + - name: Build + run: ${{ env.PROGRAM }} build --target=${{ matrix.target }} ${{ matrix.cargo_args }} + + - name: Test + run: ${{ env.PROGRAM }} test --target=${{ matrix.target }} ${{ matrix.cargo_args }} + if: ${{ matrix.test }} + + - name: Run example + run: cargo run --example info + - uses: actions/upload-artifact@v4 + with: + name: info-${{ matrix.target }} + path: info.txt \ No newline at end of file diff --git a/.github/workflows/cross.yaml b/.github/workflows/cross.yaml deleted file mode 100644 index 51d4be7..0000000 --- a/.github/workflows/cross.yaml +++ /dev/null @@ -1,95 +0,0 @@ -on: [push, pull_request] - -name: CI - -jobs: - lint: - runs-on: ubuntu-latest - name: Lint - env: - RUSTFLAGS: -Dwarnings - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: true - checks: - name: ${{ matrix.name }} (${{ matrix.target }}) - runs-on: ${{ matrix.os }} - env: - PROGRAM: ${{ matrix.cross && 'cross' || 'cargo' }} - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-latest - name: Linux - target: x86_64-unknown-linux-gnu - cross: false - test: true - - - os: macos-latest - name: macOS - target: x86_64-apple-darwin - cross: false - test: true - - - os: windows-latest - name: Windows - target: x86_64-pc-windows-msvc - cross: false - test: true - - # - os: ubuntu-latest - # name: FreeBSD - # target: x86_64-unknown-freebsd - # cross: true - # test: false - - - os: ubuntu-latest - name: Android - target: aarch64-linux-android - cross: true - test: true - - # - os: ubuntu-latest - # name: OpenWrt - # target: aarch64-unknown-linux-gnu - # cross: true - # test: true - # cargo_args: --features openwrt - - - os: ubuntu-latest - name: Linux ARMv7 - target: armv7-unknown-linux-gnueabihf - cross: true - test: true - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: true - - - name: Bootstrap - uses: dtolnay/rust-toolchain@stable - with: - targets: ${{ matrix.target }} - - - name: Install cross - run: cargo install cross - if: ${{ matrix.cross }} - - - name: Build - run: ${{ env.PROGRAM }} build --target=${{ matrix.target }} ${{ matrix.cargo_args }} - - - name: Test - run: ${{ env.PROGRAM }} test --target=${{ matrix.target }} ${{ matrix.cargo_args }} - if: ${{ matrix.test }} - - - name: Run example - run: cargo run --example info - - uses: actions/upload-artifact@v4 - with: - name: info-${{ matrix.target }} - path: info.txt diff --git a/.gitignore b/.gitignore index 250e9c4..c664348 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ /target /Cargo.lock -info.txt +/info.txt \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index aeeb832..582bffb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,16 +13,14 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.4" +version = "0.71.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" dependencies = [ "bitflags", "cexpr", "clang-sys", "itertools", - "lazy_static", - "lazycell", "log", "prettyplease", "proc-macro2", @@ -31,7 +29,6 @@ dependencies = [ "rustc-hash", "shlex", "syn", - "which", ] [[package]] @@ -95,31 +92,12 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys", -] - [[package]] name = "glob" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys", -] - [[package]] name = "itertools" version = "0.12.1" @@ -135,18 +113,6 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.155" @@ -163,12 +129,6 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - [[package]] name = "log" version = "0.4.22" @@ -197,12 +157,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - [[package]] name = "prettyplease" version = "0.2.20" @@ -262,22 +216,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rustc-hash" -version = "1.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustix" -version = "0.38.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "ryu" @@ -339,27 +280,6 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-targets" version = "0.52.6" diff --git a/Cargo.toml b/Cargo.toml index ecdcba2..0a9c292 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,9 +12,6 @@ categories = ["hardware-support"] # https://crates.io/category_slugs keywords = [] rust-version = "1.74" -[features] -generate_bindings = ["dep:bindgen"] - [dependencies] bytemuck = "1" serde = { version = "1", features = ["derive", "rc"] } @@ -23,5 +20,5 @@ serde = { version = "1", features = ["derive", "rc"] } serde_json = "1" [build-dependencies] -bindgen = { version = "0.69", optional = true } +bindgen = "0.71" cc = "1.1" diff --git a/build.rs b/build.rs index edb4199..4b8b7cf 100644 --- a/build.rs +++ b/build.rs @@ -134,25 +134,27 @@ fn main() { build.compile("cpuinfo"); - #[cfg(feature = "generate_bindings")] - generate_bindings("src/bindings.rs") + generate_bindings(); } -#[cfg(feature = "generate_bindings")] -fn generate_bindings(output_file: &str) { +fn generate_bindings() { + let dest = std::env::var("OUT_DIR").unwrap(); + let dest = std::path::Path::new(&dest).join("bindings.rs"); + + // Use MSRV for target version. + let Ok(version) = bindgen::RustTarget::stable(74, 0) else { + panic!("Invalid rust target version"); + }; + let bindings = bindgen::Builder::default() .header("vendor/cpuinfo/include/cpuinfo.h") - .raw_line("#![allow(non_upper_case_globals, non_snake_case, non_camel_case_types)]") - .raw_line("#![allow(dead_code)]") .clang_args(&["-xc++", "-std=c++11"]) .layout_tests(false) + .rust_target(version) .generate() .expect("Unable to generate bindings!"); bindings - .write_to_file(std::path::Path::new(output_file)) + .write_to_file(dest) .expect("Unable to write bindings!"); } - -#[cfg(not(feature = "generate_bindings"))] -fn generate_bindings(_: &str) {} diff --git a/info.txt b/info.txt deleted file mode 100644 index 66e966a..0000000 --- a/info.txt +++ /dev/null @@ -1 +0,0 @@ -[{"smt_id":0,"core":{"processor_start":0,"processor_count":1,"core_id":0,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":0,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":1,"processor_count":1,"core_id":1,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":1,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":1,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":1,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":2,"processor_count":1,"core_id":2,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":2,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":2,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":2,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":3,"processor_count":1,"core_id":3,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":3,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":3,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":3,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":4,"processor_count":1,"core_id":4,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":4,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":4,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":4,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":5,"processor_count":1,"core_id":5,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":5,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":5,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":5,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":6,"processor_count":1,"core_id":6,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":6,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":6,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":6,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":7,"processor_count":1,"core_id":7,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":7,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":7,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":7,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":8,"processor_count":1,"core_id":8,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":8,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":8,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":8,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":9,"processor_count":1,"core_id":9,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":9,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":9,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":9,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":10,"processor_count":1,"core_id":10,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":10,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":10,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":10,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":11,"processor_count":1,"core_id":11,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":11,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":11,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":11,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":12,"processor_count":1,"core_id":12,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":12,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":12,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":12,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":13,"processor_count":1,"core_id":13,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":13,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":13,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":13,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":14,"processor_count":1,"core_id":14,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":14,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":14,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":14,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}},{"smt_id":0,"core":{"processor_start":15,"processor_count":1,"core_id":15,"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"cluster":{"processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_id":0,"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"vendor":{"vendor":0,"name":"unknown"},"uarch":{"uarch":0,"name":"unknown"},"cpuid":984336,"frequency":0},"package":{"name":"Unknown","processor_start":0,"processor_count":16,"core_start":0,"core_count":16,"cluster_start":0,"cluster_count":1},"windows_group_id":15,"windows_processor_id":0,"apic_id":0,"cache":{"l1i":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":15,"processor_count":1},"l1d":{"size":32768,"associativity":4,"sets":128,"partitions":1,"line_size":64,"flags":0,"processor_start":15,"processor_count":1},"l2":{"size":4194304,"associativity":8,"sets":8192,"partitions":1,"line_size":64,"flags":0,"processor_start":0,"processor_count":16},"l3":null,"l4":null}}] \ No newline at end of file diff --git a/src/bindings.rs b/src/bindings.rs deleted file mode 100644 index 940dab5..0000000 --- a/src/bindings.rs +++ /dev/null @@ -1,749 +0,0 @@ -/* automatically generated by rust-bindgen 0.69.4 */ - -#![allow(non_upper_case_globals, non_snake_case, non_camel_case_types)] -#![allow(dead_code)] - -pub const _VCRT_COMPILER_PREPROCESSOR: u32 = 1; -pub const _SAL_VERSION: u32 = 20; -pub const __SAL_H_VERSION: u32 = 180000000; -pub const _USE_DECLSPECS_FOR_SAL: u32 = 0; -pub const _USE_ATTRIBUTES_FOR_SAL: u32 = 0; -pub const _CRT_PACKING: u32 = 8; -pub const _HAS_EXCEPTIONS: u32 = 1; -pub const NULL: u32 = 0; -pub const _HAS_CXX17: u32 = 0; -pub const _HAS_CXX20: u32 = 0; -pub const _HAS_CXX23: u32 = 0; -pub const _HAS_NODISCARD: u32 = 1; -pub const WCHAR_MIN: u32 = 0; -pub const WCHAR_MAX: u32 = 65535; -pub const WINT_MIN: u32 = 0; -pub const WINT_MAX: u32 = 65535; -pub const CPUINFO_ARCH_X86_64: u32 = 1; -pub const CPUINFO_ARCH_X86: u32 = 0; -pub const CPUINFO_ARCH_ARM: u32 = 0; -pub const CPUINFO_ARCH_ARM64: u32 = 0; -pub const CPUINFO_ARCH_PPC64: u32 = 0; -pub const CPUINFO_ARCH_ASMJS: u32 = 0; -pub const CPUINFO_ARCH_WASM: u32 = 0; -pub const CPUINFO_ARCH_WASMSIMD: u32 = 0; -pub const CPUINFO_ARCH_RISCV32: u32 = 0; -pub const CPUINFO_ARCH_RISCV64: u32 = 0; -pub const CPUINFO_CACHE_UNIFIED: u32 = 1; -pub const CPUINFO_CACHE_INCLUSIVE: u32 = 2; -pub const CPUINFO_CACHE_COMPLEX_INDEXING: u32 = 4; -pub const CPUINFO_PAGE_SIZE_4KB: u32 = 4096; -pub const CPUINFO_PAGE_SIZE_1MB: u32 = 1048576; -pub const CPUINFO_PAGE_SIZE_2MB: u32 = 2097152; -pub const CPUINFO_PAGE_SIZE_4MB: u32 = 4194304; -pub const CPUINFO_PAGE_SIZE_16MB: u32 = 16777216; -pub const CPUINFO_PAGE_SIZE_1GB: u32 = 1073741824; -pub const CPUINFO_PACKAGE_NAME_MAX: u32 = 48; -pub type va_list = *mut ::std::os::raw::c_char; -extern "C" { - pub fn __va_start(arg1: *mut va_list, ...); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __vcrt_va_list_is_reference { - pub _address: u8, -} -pub const __vcrt_va_list_is_reference___the_value: __vcrt_va_list_is_reference__bindgen_ty_1 = - false; -pub type __vcrt_va_list_is_reference__bindgen_ty_1 = bool; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __vcrt_assert_va_start_is_not_reference { - pub _address: u8, -} -pub type __vcrt_bool = bool; -extern "C" { - pub fn __security_init_cookie(); -} -extern "C" { - pub fn __security_check_cookie(_StackCookie: usize); -} -extern "C" { - pub fn __report_gsfailure(_StackCookie: usize) -> !; -} -extern "C" { - pub static mut __security_cookie: usize; -} -pub type int_least8_t = ::std::os::raw::c_schar; -pub type int_least16_t = ::std::os::raw::c_short; -pub type int_least32_t = ::std::os::raw::c_int; -pub type int_least64_t = ::std::os::raw::c_longlong; -pub type uint_least8_t = ::std::os::raw::c_uchar; -pub type uint_least16_t = ::std::os::raw::c_ushort; -pub type uint_least32_t = ::std::os::raw::c_uint; -pub type uint_least64_t = ::std::os::raw::c_ulonglong; -pub type int_fast8_t = ::std::os::raw::c_schar; -pub type int_fast16_t = ::std::os::raw::c_int; -pub type int_fast32_t = ::std::os::raw::c_int; -pub type int_fast64_t = ::std::os::raw::c_longlong; -pub type uint_fast8_t = ::std::os::raw::c_uchar; -pub type uint_fast16_t = ::std::os::raw::c_uint; -pub type uint_fast32_t = ::std::os::raw::c_uint; -pub type uint_fast64_t = ::std::os::raw::c_ulonglong; -pub type intmax_t = ::std::os::raw::c_longlong; -pub type uintmax_t = ::std::os::raw::c_ulonglong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_cache { - #[doc = " Cache size in bytes"] - pub size: u32, - #[doc = " Number of ways of associativity"] - pub associativity: u32, - #[doc = " Number of sets"] - pub sets: u32, - #[doc = " Number of partitions"] - pub partitions: u32, - #[doc = " Line size in bytes"] - pub line_size: u32, - #[doc = " Binary characteristics of the cache (unified cache, inclusive cache,\n cache with complex indexing).\n\n @see CPUINFO_CACHE_UNIFIED, CPUINFO_CACHE_INCLUSIVE,\n CPUINFO_CACHE_COMPLEX_INDEXING"] - pub flags: u32, - #[doc = " Index of the first logical processor that shares this cache"] - pub processor_start: u32, - #[doc = " Number of logical processors that share this cache"] - pub processor_count: u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_trace_cache { - pub uops: u32, - pub associativity: u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_tlb { - pub entries: u32, - pub associativity: u32, - pub pages: u64, -} -#[doc = " Processor vendor is not known to the library, or the library failed\nto get vendor information from the OS."] -pub const cpuinfo_vendor_cpuinfo_vendor_unknown: cpuinfo_vendor = 0; -#[doc = " Intel Corporation. Vendor of x86, x86-64, IA64, and ARM processor\n microarchitectures.\n\n Sold its ARM design subsidiary in 2006. The last ARM processor design\n was released in 2004."] -pub const cpuinfo_vendor_cpuinfo_vendor_intel: cpuinfo_vendor = 1; -#[doc = " Advanced Micro Devices, Inc. Vendor of x86 and x86-64 processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_amd: cpuinfo_vendor = 2; -#[doc = " ARM Holdings plc. Vendor of ARM and ARM64 processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_arm: cpuinfo_vendor = 3; -#[doc = " Qualcomm Incorporated. Vendor of ARM and ARM64 processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_qualcomm: cpuinfo_vendor = 4; -#[doc = " Apple Inc. Vendor of ARM and ARM64 processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_apple: cpuinfo_vendor = 5; -#[doc = " Samsung Electronics Co., Ltd. Vendir if ARM64 processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_samsung: cpuinfo_vendor = 6; -#[doc = " Nvidia Corporation. Vendor of ARM64-compatible processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_nvidia: cpuinfo_vendor = 7; -#[doc = " MIPS Technologies, Inc. Vendor of MIPS processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_mips: cpuinfo_vendor = 8; -#[doc = " International Business Machines Corporation. Vendor of PowerPC\nprocessor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_ibm: cpuinfo_vendor = 9; -#[doc = " Ingenic Semiconductor. Vendor of MIPS processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_ingenic: cpuinfo_vendor = 10; -#[doc = " VIA Technologies, Inc. Vendor of x86 and x86-64 processor\n microarchitectures.\n\n Processors are designed by Centaur Technology, a subsidiary of VIA\n Technologies."] -pub const cpuinfo_vendor_cpuinfo_vendor_via: cpuinfo_vendor = 11; -#[doc = " Cavium, Inc. Vendor of ARM64 processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_cavium: cpuinfo_vendor = 12; -#[doc = " Broadcom, Inc. Vendor of ARM processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_broadcom: cpuinfo_vendor = 13; -#[doc = " Applied Micro Circuits Corporation (APM). Vendor of ARM64 processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_apm: cpuinfo_vendor = 14; -#[doc = " Huawei Technologies Co., Ltd. Vendor of ARM64 processor\n microarchitectures.\n\n Processors are designed by HiSilicon, a subsidiary of Huawei."] -pub const cpuinfo_vendor_cpuinfo_vendor_huawei: cpuinfo_vendor = 15; -#[doc = " Hygon (Chengdu Haiguang Integrated Circuit Design Co., Ltd), Vendor\n of x86-64 processor microarchitectures.\n\n Processors are variants of AMD cores."] -pub const cpuinfo_vendor_cpuinfo_vendor_hygon: cpuinfo_vendor = 16; -#[doc = " SiFive, Inc. Vendor of RISC-V processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_sifive: cpuinfo_vendor = 17; -#[doc = " Texas Instruments Inc. Vendor of ARM processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_texas_instruments: cpuinfo_vendor = 30; -#[doc = " Marvell Technology Group Ltd. Vendor of ARM processor\n microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_marvell: cpuinfo_vendor = 31; -#[doc = " RDC Semiconductor Co., Ltd. Vendor of x86 processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_rdc: cpuinfo_vendor = 32; -#[doc = " DM&P Electronics Inc. Vendor of x86 processor microarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_dmp: cpuinfo_vendor = 33; -#[doc = " Motorola, Inc. Vendor of PowerPC and ARM processor\nmicroarchitectures."] -pub const cpuinfo_vendor_cpuinfo_vendor_motorola: cpuinfo_vendor = 34; -#[doc = " Transmeta Corporation. Vendor of x86 processor microarchitectures.\n\n Now defunct. The last processor design was released in 2004.\n Transmeta processors implemented VLIW ISA and used binary translation\n to execute x86 code."] -pub const cpuinfo_vendor_cpuinfo_vendor_transmeta: cpuinfo_vendor = 50; -#[doc = " Cyrix Corporation. Vendor of x86 processor microarchitectures.\n\n Now defunct. The last processor design was released in 1996."] -pub const cpuinfo_vendor_cpuinfo_vendor_cyrix: cpuinfo_vendor = 51; -#[doc = " Rise Technology. Vendor of x86 processor microarchitectures.\n\n Now defunct. The last processor design was released in 1999."] -pub const cpuinfo_vendor_cpuinfo_vendor_rise: cpuinfo_vendor = 52; -#[doc = " National Semiconductor. Vendor of x86 processor microarchitectures.\n\n Sold its x86 design subsidiary in 1999. The last processor design was\n released in 1998."] -pub const cpuinfo_vendor_cpuinfo_vendor_nsc: cpuinfo_vendor = 53; -#[doc = " Silicon Integrated Systems. Vendor of x86 processor\n microarchitectures.\n\n Sold its x86 design subsidiary in 2001. The last processor design was\n released in 2001."] -pub const cpuinfo_vendor_cpuinfo_vendor_sis: cpuinfo_vendor = 54; -#[doc = " NexGen. Vendor of x86 processor microarchitectures.\n\n Now defunct. The last processor design was released in 1994.\n NexGen designed the first x86 microarchitecture which decomposed x86\n instructions into simple microoperations."] -pub const cpuinfo_vendor_cpuinfo_vendor_nexgen: cpuinfo_vendor = 55; -#[doc = " United Microelectronics Corporation. Vendor of x86 processor\n microarchitectures.\n\n Ceased x86 in the early 1990s. The last processor design was released\n in 1991. Designed U5C and U5D processors. Both are 486 level."] -pub const cpuinfo_vendor_cpuinfo_vendor_umc: cpuinfo_vendor = 56; -#[doc = " Digital Equipment Corporation. Vendor of ARM processor\n microarchitecture.\n\n Sold its ARM designs in 1997. The last processor design was released\n in 1997."] -pub const cpuinfo_vendor_cpuinfo_vendor_dec: cpuinfo_vendor = 57; -#[doc = " Vendor of processor core design"] -pub type cpuinfo_vendor = ::std::os::raw::c_int; -#[doc = " Microarchitecture is unknown, or the library failed to get\ninformation about the microarchitecture from OS"] -pub const cpuinfo_uarch_cpuinfo_uarch_unknown: cpuinfo_uarch = 0; -#[doc = " Pentium and Pentium MMX microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_p5: cpuinfo_uarch = 1048832; -#[doc = " Intel Quark microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_quark: cpuinfo_uarch = 1048833; -#[doc = " Pentium Pro, Pentium II, and Pentium III."] -pub const cpuinfo_uarch_cpuinfo_uarch_p6: cpuinfo_uarch = 1049088; -#[doc = " Pentium M."] -pub const cpuinfo_uarch_cpuinfo_uarch_dothan: cpuinfo_uarch = 1049089; -#[doc = " Intel Core microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_yonah: cpuinfo_uarch = 1049090; -#[doc = " Intel Core 2 microarchitecture on 65 nm process."] -pub const cpuinfo_uarch_cpuinfo_uarch_conroe: cpuinfo_uarch = 1049091; -#[doc = " Intel Core 2 microarchitecture on 45 nm process."] -pub const cpuinfo_uarch_cpuinfo_uarch_penryn: cpuinfo_uarch = 1049092; -#[doc = " Intel Nehalem and Westmere microarchitectures (Core i3/i5/i7 1st\ngen)."] -pub const cpuinfo_uarch_cpuinfo_uarch_nehalem: cpuinfo_uarch = 1049093; -#[doc = " Intel Sandy Bridge microarchitecture (Core i3/i5/i7 2nd gen)."] -pub const cpuinfo_uarch_cpuinfo_uarch_sandy_bridge: cpuinfo_uarch = 1049094; -#[doc = " Intel Ivy Bridge microarchitecture (Core i3/i5/i7 3rd gen)."] -pub const cpuinfo_uarch_cpuinfo_uarch_ivy_bridge: cpuinfo_uarch = 1049095; -#[doc = " Intel Haswell microarchitecture (Core i3/i5/i7 4th gen)."] -pub const cpuinfo_uarch_cpuinfo_uarch_haswell: cpuinfo_uarch = 1049096; -#[doc = " Intel Broadwell microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_broadwell: cpuinfo_uarch = 1049097; -#[doc = " Intel Sky Lake microarchitecture (14 nm, including\nKaby/Coffee/Whiskey/Amber/Comet/Cascade/Cooper Lake)."] -pub const cpuinfo_uarch_cpuinfo_uarch_sky_lake: cpuinfo_uarch = 1049098; -#[doc = " DEPRECATED (Intel Kaby Lake microarchitecture)."] -pub const cpuinfo_uarch_cpuinfo_uarch_kaby_lake: cpuinfo_uarch = 1049098; -#[doc = " Intel Palm Cove microarchitecture (10 nm, Cannon Lake)."] -pub const cpuinfo_uarch_cpuinfo_uarch_palm_cove: cpuinfo_uarch = 1049099; -#[doc = " Intel Sunny Cove microarchitecture (10 nm, Ice Lake)."] -pub const cpuinfo_uarch_cpuinfo_uarch_sunny_cove: cpuinfo_uarch = 1049100; -#[doc = " Pentium 4 with Willamette, Northwood, or Foster cores."] -pub const cpuinfo_uarch_cpuinfo_uarch_willamette: cpuinfo_uarch = 1049344; -#[doc = " Pentium 4 with Prescott and later cores."] -pub const cpuinfo_uarch_cpuinfo_uarch_prescott: cpuinfo_uarch = 1049345; -#[doc = " Intel Atom on 45 nm process."] -pub const cpuinfo_uarch_cpuinfo_uarch_bonnell: cpuinfo_uarch = 1049600; -#[doc = " Intel Atom on 32 nm process."] -pub const cpuinfo_uarch_cpuinfo_uarch_saltwell: cpuinfo_uarch = 1049601; -#[doc = " Intel Silvermont microarchitecture (22 nm out-of-order Atom)."] -pub const cpuinfo_uarch_cpuinfo_uarch_silvermont: cpuinfo_uarch = 1049602; -#[doc = " Intel Airmont microarchitecture (14 nm out-of-order Atom)."] -pub const cpuinfo_uarch_cpuinfo_uarch_airmont: cpuinfo_uarch = 1049603; -#[doc = " Intel Goldmont microarchitecture (Denverton, Apollo Lake)."] -pub const cpuinfo_uarch_cpuinfo_uarch_goldmont: cpuinfo_uarch = 1049604; -#[doc = " Intel Goldmont Plus microarchitecture (Gemini Lake)."] -pub const cpuinfo_uarch_cpuinfo_uarch_goldmont_plus: cpuinfo_uarch = 1049605; -#[doc = " Intel Knights Ferry HPC boards."] -pub const cpuinfo_uarch_cpuinfo_uarch_knights_ferry: cpuinfo_uarch = 1049856; -#[doc = " Intel Knights Corner HPC boards (aka Xeon Phi)."] -pub const cpuinfo_uarch_cpuinfo_uarch_knights_corner: cpuinfo_uarch = 1049857; -#[doc = " Intel Knights Landing microarchitecture (second-gen MIC)."] -pub const cpuinfo_uarch_cpuinfo_uarch_knights_landing: cpuinfo_uarch = 1049858; -#[doc = " Intel Knights Hill microarchitecture (third-gen MIC)."] -pub const cpuinfo_uarch_cpuinfo_uarch_knights_hill: cpuinfo_uarch = 1049859; -#[doc = " Intel Knights Mill Xeon Phi."] -pub const cpuinfo_uarch_cpuinfo_uarch_knights_mill: cpuinfo_uarch = 1049860; -#[doc = " Intel/Marvell XScale series."] -pub const cpuinfo_uarch_cpuinfo_uarch_xscale: cpuinfo_uarch = 1050112; -#[doc = " AMD K5."] -pub const cpuinfo_uarch_cpuinfo_uarch_k5: cpuinfo_uarch = 2097408; -#[doc = " AMD K6 and alike."] -pub const cpuinfo_uarch_cpuinfo_uarch_k6: cpuinfo_uarch = 2097409; -#[doc = " AMD Athlon and Duron."] -pub const cpuinfo_uarch_cpuinfo_uarch_k7: cpuinfo_uarch = 2097410; -#[doc = " AMD Athlon 64, Opteron 64."] -pub const cpuinfo_uarch_cpuinfo_uarch_k8: cpuinfo_uarch = 2097411; -#[doc = " AMD Family 10h (Barcelona, Istambul, Magny-Cours)."] -pub const cpuinfo_uarch_cpuinfo_uarch_k10: cpuinfo_uarch = 2097412; -#[doc = " AMD Bulldozer microarchitecture\n Zambezi FX-series CPUs, Zurich, Valencia and Interlagos Opteron CPUs."] -pub const cpuinfo_uarch_cpuinfo_uarch_bulldozer: cpuinfo_uarch = 2097413; -#[doc = " AMD Piledriver microarchitecture\n Vishera FX-series CPUs, Trinity and Richland APUs, Delhi, Seoul, Abu\n Dhabi Opteron CPUs."] -pub const cpuinfo_uarch_cpuinfo_uarch_piledriver: cpuinfo_uarch = 2097414; -#[doc = " AMD Steamroller microarchitecture (Kaveri APUs)."] -pub const cpuinfo_uarch_cpuinfo_uarch_steamroller: cpuinfo_uarch = 2097415; -#[doc = " AMD Excavator microarchitecture (Carizzo APUs)."] -pub const cpuinfo_uarch_cpuinfo_uarch_excavator: cpuinfo_uarch = 2097416; -#[doc = " AMD Zen microarchitecture (12/14 nm Ryzen and EPYC CPUs)."] -pub const cpuinfo_uarch_cpuinfo_uarch_zen: cpuinfo_uarch = 2097417; -#[doc = " AMD Zen 2 microarchitecture (7 nm Ryzen and EPYC CPUs)."] -pub const cpuinfo_uarch_cpuinfo_uarch_zen2: cpuinfo_uarch = 2097418; -#[doc = " AMD Zen 3 microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_zen3: cpuinfo_uarch = 2097419; -#[doc = " AMD Zen 4 microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_zen4: cpuinfo_uarch = 2097420; -#[doc = " NSC Geode and AMD Geode GX and LX."] -pub const cpuinfo_uarch_cpuinfo_uarch_geode: cpuinfo_uarch = 2097664; -#[doc = " AMD Bobcat mobile microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_bobcat: cpuinfo_uarch = 2097665; -#[doc = " AMD Jaguar mobile microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_jaguar: cpuinfo_uarch = 2097666; -#[doc = " AMD Puma mobile microarchitecture."] -pub const cpuinfo_uarch_cpuinfo_uarch_puma: cpuinfo_uarch = 2097667; -#[doc = " ARM7 series."] -pub const cpuinfo_uarch_cpuinfo_uarch_arm7: cpuinfo_uarch = 3145984; -#[doc = " ARM9 series."] -pub const cpuinfo_uarch_cpuinfo_uarch_arm9: cpuinfo_uarch = 3145985; -#[doc = " ARM 1136, ARM 1156, ARM 1176, or ARM 11MPCore."] -pub const cpuinfo_uarch_cpuinfo_uarch_arm11: cpuinfo_uarch = 3145986; -#[doc = " ARM Cortex-A5."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a5: cpuinfo_uarch = 3146245; -#[doc = " ARM Cortex-A7."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a7: cpuinfo_uarch = 3146247; -#[doc = " ARM Cortex-A8."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a8: cpuinfo_uarch = 3146248; -#[doc = " ARM Cortex-A9."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a9: cpuinfo_uarch = 3146249; -#[doc = " ARM Cortex-A12."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a12: cpuinfo_uarch = 3146258; -#[doc = " ARM Cortex-A15."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a15: cpuinfo_uarch = 3146261; -#[doc = " ARM Cortex-A17."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a17: cpuinfo_uarch = 3146263; -#[doc = " ARM Cortex-A32."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a32: cpuinfo_uarch = 3146546; -#[doc = " ARM Cortex-A35."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a35: cpuinfo_uarch = 3146549; -#[doc = " ARM Cortex-A53."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a53: cpuinfo_uarch = 3146579; -#[doc = " ARM Cortex-A55 revision 0 (restricted dual-issue capabilities\ncompared to revision 1+)."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a55r0: cpuinfo_uarch = 3146580; -#[doc = " ARM Cortex-A55."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a55: cpuinfo_uarch = 3146581; -#[doc = " ARM Cortex-A57."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a57: cpuinfo_uarch = 3146583; -#[doc = " ARM Cortex-A65."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a65: cpuinfo_uarch = 3146597; -#[doc = " ARM Cortex-A72."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a72: cpuinfo_uarch = 3146610; -#[doc = " ARM Cortex-A73."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a73: cpuinfo_uarch = 3146611; -#[doc = " ARM Cortex-A75."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a75: cpuinfo_uarch = 3146613; -#[doc = " ARM Cortex-A76."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a76: cpuinfo_uarch = 3146614; -#[doc = " ARM Cortex-A77."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a77: cpuinfo_uarch = 3146615; -#[doc = " ARM Cortex-A78."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a78: cpuinfo_uarch = 3146616; -#[doc = " ARM Neoverse N1."] -pub const cpuinfo_uarch_cpuinfo_uarch_neoverse_n1: cpuinfo_uarch = 3146752; -#[doc = " ARM Neoverse E1."] -pub const cpuinfo_uarch_cpuinfo_uarch_neoverse_e1: cpuinfo_uarch = 3146753; -#[doc = " ARM Neoverse V1."] -pub const cpuinfo_uarch_cpuinfo_uarch_neoverse_v1: cpuinfo_uarch = 3146754; -#[doc = " ARM Neoverse N2."] -pub const cpuinfo_uarch_cpuinfo_uarch_neoverse_n2: cpuinfo_uarch = 3146755; -#[doc = " ARM Neoverse V2."] -pub const cpuinfo_uarch_cpuinfo_uarch_neoverse_v2: cpuinfo_uarch = 3146756; -#[doc = " ARM Cortex-X1."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_x1: cpuinfo_uarch = 3147009; -#[doc = " ARM Cortex-X2."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_x2: cpuinfo_uarch = 3147010; -#[doc = " ARM Cortex-X3."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_x3: cpuinfo_uarch = 3147011; -#[doc = " ARM Cortex-A510."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a510: cpuinfo_uarch = 3147089; -#[doc = " ARM Cortex-A710."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a710: cpuinfo_uarch = 3147121; -#[doc = " ARM Cortex-A715."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a715: cpuinfo_uarch = 3147122; -#[doc = " Qualcomm Scorpion."] -pub const cpuinfo_uarch_cpuinfo_uarch_scorpion: cpuinfo_uarch = 4194560; -#[doc = " Qualcomm Krait."] -pub const cpuinfo_uarch_cpuinfo_uarch_krait: cpuinfo_uarch = 4194561; -#[doc = " Qualcomm Kryo."] -pub const cpuinfo_uarch_cpuinfo_uarch_kryo: cpuinfo_uarch = 4194562; -#[doc = " Qualcomm Falkor."] -pub const cpuinfo_uarch_cpuinfo_uarch_falkor: cpuinfo_uarch = 4194563; -#[doc = " Qualcomm Saphira."] -pub const cpuinfo_uarch_cpuinfo_uarch_saphira: cpuinfo_uarch = 4194564; -#[doc = " Nvidia Denver."] -pub const cpuinfo_uarch_cpuinfo_uarch_denver: cpuinfo_uarch = 5243136; -#[doc = " Nvidia Denver 2."] -pub const cpuinfo_uarch_cpuinfo_uarch_denver2: cpuinfo_uarch = 5243137; -#[doc = " Nvidia Carmel."] -pub const cpuinfo_uarch_cpuinfo_uarch_carmel: cpuinfo_uarch = 5243138; -#[doc = " Samsung Exynos M1 (Exynos 8890 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_exynos_m1: cpuinfo_uarch = 6291712; -#[doc = " Samsung Exynos M2 (Exynos 8895 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_exynos_m2: cpuinfo_uarch = 6291713; -#[doc = " Samsung Exynos M3 (Exynos 9810 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_exynos_m3: cpuinfo_uarch = 6291714; -#[doc = " Samsung Exynos M4 (Exynos 9820 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_exynos_m4: cpuinfo_uarch = 6291715; -#[doc = " Samsung Exynos M5 (Exynos 9830 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_exynos_m5: cpuinfo_uarch = 6291716; -#[doc = " Samsung Exynos M5 (Exynos 9830 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_cortex_a76ae: cpuinfo_uarch = 3146614; -#[doc = " Samsung Exynos M5 (Exynos 9830 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_mongoose_m1: cpuinfo_uarch = 6291712; -#[doc = " Samsung Exynos M5 (Exynos 9830 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_mongoose_m2: cpuinfo_uarch = 6291713; -#[doc = " Samsung Exynos M5 (Exynos 9830 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_meerkat_m3: cpuinfo_uarch = 6291714; -#[doc = " Samsung Exynos M5 (Exynos 9830 big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_meerkat_m4: cpuinfo_uarch = 6291715; -#[doc = " Apple A6 and A6X processors."] -pub const cpuinfo_uarch_cpuinfo_uarch_swift: cpuinfo_uarch = 7340288; -#[doc = " Apple A7 processor."] -pub const cpuinfo_uarch_cpuinfo_uarch_cyclone: cpuinfo_uarch = 7340289; -#[doc = " Apple A8 and A8X processor."] -pub const cpuinfo_uarch_cpuinfo_uarch_typhoon: cpuinfo_uarch = 7340290; -#[doc = " Apple A9 and A9X processor."] -pub const cpuinfo_uarch_cpuinfo_uarch_twister: cpuinfo_uarch = 7340291; -#[doc = " Apple A10 and A10X processor."] -pub const cpuinfo_uarch_cpuinfo_uarch_hurricane: cpuinfo_uarch = 7340292; -#[doc = " Apple A11 processor (big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_monsoon: cpuinfo_uarch = 7340293; -#[doc = " Apple A11 processor (little cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_mistral: cpuinfo_uarch = 7340294; -#[doc = " Apple A12 processor (big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_vortex: cpuinfo_uarch = 7340295; -#[doc = " Apple A12 processor (little cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_tempest: cpuinfo_uarch = 7340296; -#[doc = " Apple A13 processor (big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_lightning: cpuinfo_uarch = 7340297; -#[doc = " Apple A13 processor (little cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_thunder: cpuinfo_uarch = 7340298; -#[doc = " Apple A14 / M1 processor (big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_firestorm: cpuinfo_uarch = 7340299; -#[doc = " Apple A14 / M1 processor (little cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_icestorm: cpuinfo_uarch = 7340300; -#[doc = " Apple A15 / M2 processor (big cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_avalanche: cpuinfo_uarch = 7340301; -#[doc = " Apple A15 / M2 processor (little cores)."] -pub const cpuinfo_uarch_cpuinfo_uarch_blizzard: cpuinfo_uarch = 7340302; -#[doc = " Cavium ThunderX."] -pub const cpuinfo_uarch_cpuinfo_uarch_thunderx: cpuinfo_uarch = 8388864; -#[doc = " Cavium ThunderX2 (originally Broadcom Vulkan)."] -pub const cpuinfo_uarch_cpuinfo_uarch_thunderx2: cpuinfo_uarch = 8389120; -#[doc = " Marvell PJ4."] -pub const cpuinfo_uarch_cpuinfo_uarch_pj4: cpuinfo_uarch = 9437440; -#[doc = " Broadcom Brahma B15."] -pub const cpuinfo_uarch_cpuinfo_uarch_brahma_b15: cpuinfo_uarch = 10486016; -#[doc = " Broadcom Brahma B53."] -pub const cpuinfo_uarch_cpuinfo_uarch_brahma_b53: cpuinfo_uarch = 10486017; -#[doc = " Applied Micro X-Gene."] -pub const cpuinfo_uarch_cpuinfo_uarch_xgene: cpuinfo_uarch = 11534592; -#[doc = " Applied Micro X-Gene."] -pub const cpuinfo_uarch_cpuinfo_uarch_dhyana: cpuinfo_uarch = 16777472; -#[doc = " HiSilicon TaiShan v110 (Huawei Kunpeng 920 series processors)."] -pub const cpuinfo_uarch_cpuinfo_uarch_taishan_v110: cpuinfo_uarch = 12583168; -#[doc = " Processor microarchitecture\n\n Processors with different microarchitectures often have different instruction\n performance characteristics, and may have dramatically different pipeline\n organization."] -pub type cpuinfo_uarch = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_processor { - #[doc = " SMT (hyperthread) ID within a core"] - pub smt_id: u32, - #[doc = " Core containing this logical processor"] - pub core: *const cpuinfo_core, - #[doc = " Cluster of cores containing this logical processor"] - pub cluster: *const cpuinfo_cluster, - #[doc = " Physical package containing this logical processor"] - pub package: *const cpuinfo_package, - #[doc = " Windows-specific ID for the group containing the logical processor."] - pub windows_group_id: u16, - #[doc = " Windows-specific ID of the logical processor within its group:\n - Bit in the KAFFINITY mask identifies this\n logical processor within its group."] - pub windows_processor_id: u16, - #[doc = " APIC ID (unique x86-specific ID of the logical processor)"] - pub apic_id: u32, - pub cache: cpuinfo_processor__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_processor__bindgen_ty_1 { - #[doc = " Level 1 instruction cache"] - pub l1i: *const cpuinfo_cache, - #[doc = " Level 1 data cache"] - pub l1d: *const cpuinfo_cache, - #[doc = " Level 2 unified or data cache"] - pub l2: *const cpuinfo_cache, - #[doc = " Level 3 unified or data cache"] - pub l3: *const cpuinfo_cache, - #[doc = " Level 4 unified or data cache"] - pub l4: *const cpuinfo_cache, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_core { - #[doc = " Index of the first logical processor on this core."] - pub processor_start: u32, - #[doc = " Number of logical processors on this core"] - pub processor_count: u32, - #[doc = " Core ID within a package"] - pub core_id: u32, - #[doc = " Cluster containing this core"] - pub cluster: *const cpuinfo_cluster, - #[doc = " Physical package containing this core."] - pub package: *const cpuinfo_package, - #[doc = " Vendor of the CPU microarchitecture for this core"] - pub vendor: cpuinfo_vendor, - #[doc = " CPU microarchitecture for this core"] - pub uarch: cpuinfo_uarch, - #[doc = " Value of CPUID leaf 1 EAX register for this core"] - pub cpuid: u32, - #[doc = " Clock rate (non-Turbo) of the core, in Hz"] - pub frequency: u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_cluster { - #[doc = " Index of the first logical processor in the cluster"] - pub processor_start: u32, - #[doc = " Number of logical processors in the cluster"] - pub processor_count: u32, - #[doc = " Index of the first core in the cluster"] - pub core_start: u32, - #[doc = " Number of cores on the cluster"] - pub core_count: u32, - #[doc = " Cluster ID within a package"] - pub cluster_id: u32, - #[doc = " Physical package containing the cluster"] - pub package: *const cpuinfo_package, - #[doc = " CPU microarchitecture vendor of the cores in the cluster"] - pub vendor: cpuinfo_vendor, - #[doc = " CPU microarchitecture of the cores in the cluster"] - pub uarch: cpuinfo_uarch, - #[doc = " Value of CPUID leaf 1 EAX register of the cores in the cluster"] - pub cpuid: u32, - #[doc = " Clock rate (non-Turbo) of the cores in the cluster, in Hz"] - pub frequency: u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_package { - #[doc = " SoC or processor chip model name"] - pub name: [::std::os::raw::c_char; 48usize], - #[doc = " Index of the first logical processor on this physical package"] - pub processor_start: u32, - #[doc = " Number of logical processors on this physical package"] - pub processor_count: u32, - #[doc = " Index of the first core on this physical package"] - pub core_start: u32, - #[doc = " Number of cores on this physical package"] - pub core_count: u32, - #[doc = " Index of the first cluster of cores on this physical package"] - pub cluster_start: u32, - #[doc = " Number of clusters of cores on this physical package"] - pub cluster_count: u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_uarch_info { - #[doc = " Type of CPU microarchitecture"] - pub uarch: cpuinfo_uarch, - #[doc = " Value of CPUID leaf 1 EAX register for the microarchitecture"] - pub cpuid: u32, - #[doc = " Number of logical processors with the microarchitecture"] - pub processor_count: u32, - #[doc = " Number of cores with the microarchitecture"] - pub core_count: u32, -} -extern "C" { - pub fn cpuinfo_initialize() -> bool; -} -extern "C" { - pub fn cpuinfo_deinitialize(); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cpuinfo_x86_isa { - pub rdtscp: bool, - pub rdpid: bool, - pub sysenter: bool, - pub msr: bool, - pub clzero: bool, - pub clflush: bool, - pub clflushopt: bool, - pub mwait: bool, - pub mwaitx: bool, - pub fxsave: bool, - pub xsave: bool, - pub three_d_now: bool, - pub three_d_now_plus: bool, - pub prefetch: bool, - pub prefetchw: bool, - pub prefetchwt1: bool, - pub sse3: bool, - pub ssse3: bool, - pub sse4_1: bool, - pub sse4_2: bool, - pub sse4a: bool, - pub misaligned_sse: bool, - pub avx: bool, - pub avxvnni: bool, - pub fma3: bool, - pub fma4: bool, - pub xop: bool, - pub f16c: bool, - pub avx2: bool, - pub avx512f: bool, - pub avx512pf: bool, - pub avx512er: bool, - pub avx512cd: bool, - pub avx512dq: bool, - pub avx512bw: bool, - pub avx512vl: bool, - pub avx512ifma: bool, - pub avx512vbmi: bool, - pub avx512vbmi2: bool, - pub avx512bitalg: bool, - pub avx512vpopcntdq: bool, - pub avx512vnni: bool, - pub avx512bf16: bool, - pub avx512fp16: bool, - pub avx512vp2intersect: bool, - pub avx512_4vnniw: bool, - pub avx512_4fmaps: bool, - pub amx_bf16: bool, - pub amx_tile: bool, - pub amx_int8: bool, - pub amx_fp16: bool, - pub avx_vnni_int8: bool, - pub avx_vnni_int16: bool, - pub avx_ne_convert: bool, - pub hle: bool, - pub rtm: bool, - pub xtest: bool, - pub mpx: bool, - pub cmpxchg16b: bool, - pub clwb: bool, - pub movbe: bool, - pub lahf_sahf: bool, - pub fs_gs_base: bool, - pub lzcnt: bool, - pub popcnt: bool, - pub tbm: bool, - pub bmi: bool, - pub bmi2: bool, - pub adx: bool, - pub aes: bool, - pub vaes: bool, - pub pclmulqdq: bool, - pub vpclmulqdq: bool, - pub gfni: bool, - pub rdrand: bool, - pub rdseed: bool, - pub sha: bool, - pub rng: bool, - pub ace: bool, - pub ace2: bool, - pub phe: bool, - pub pmm: bool, - pub lwp: bool, -} -extern "C" { - pub static mut cpuinfo_isa: cpuinfo_x86_isa; -} -extern "C" { - pub fn cpuinfo_get_processors() -> *const cpuinfo_processor; -} -extern "C" { - pub fn cpuinfo_get_cores() -> *const cpuinfo_core; -} -extern "C" { - pub fn cpuinfo_get_clusters() -> *const cpuinfo_cluster; -} -extern "C" { - pub fn cpuinfo_get_packages() -> *const cpuinfo_package; -} -extern "C" { - pub fn cpuinfo_get_uarchs() -> *const cpuinfo_uarch_info; -} -extern "C" { - pub fn cpuinfo_get_l1i_caches() -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l1d_caches() -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l2_caches() -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l3_caches() -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l4_caches() -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_processor(index: u32) -> *const cpuinfo_processor; -} -extern "C" { - pub fn cpuinfo_get_core(index: u32) -> *const cpuinfo_core; -} -extern "C" { - pub fn cpuinfo_get_cluster(index: u32) -> *const cpuinfo_cluster; -} -extern "C" { - pub fn cpuinfo_get_package(index: u32) -> *const cpuinfo_package; -} -extern "C" { - pub fn cpuinfo_get_uarch(index: u32) -> *const cpuinfo_uarch_info; -} -extern "C" { - pub fn cpuinfo_get_l1i_cache(index: u32) -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l1d_cache(index: u32) -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l2_cache(index: u32) -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l3_cache(index: u32) -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_l4_cache(index: u32) -> *const cpuinfo_cache; -} -extern "C" { - pub fn cpuinfo_get_processors_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_cores_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_clusters_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_packages_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_uarchs_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_l1i_caches_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_l1d_caches_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_l2_caches_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_l3_caches_count() -> u32; -} -extern "C" { - pub fn cpuinfo_get_l4_caches_count() -> u32; -} -extern "C" { - #[doc = " Returns upper bound on cache size."] - pub fn cpuinfo_get_max_cache_size() -> u32; -} -extern "C" { - #[doc = " Identify the logical processor that executes the current thread.\n\n There is no guarantee that the thread will stay on the same logical processor\n for any time. Callers should treat the result as only a hint, and be prepared\n to handle NULL return value."] - pub fn cpuinfo_get_current_processor() -> *const cpuinfo_processor; -} -extern "C" { - #[doc = " Identify the core that executes the current thread.\n\n There is no guarantee that the thread will stay on the same core for any\n time. Callers should treat the result as only a hint, and be prepared to\n handle NULL return value."] - pub fn cpuinfo_get_current_core() -> *const cpuinfo_core; -} -extern "C" { - #[doc = " Identify the microarchitecture index of the core that executes the current\n thread. If the system does not support such identification, the function\n returns 0.\n\n There is no guarantee that the thread will stay on the same type of core for\n any time. Callers should treat the result as only a hint."] - pub fn cpuinfo_get_current_uarch_index() -> u32; -} -extern "C" { - #[doc = " Identify the microarchitecture index of the core that executes the current\n thread. If the system does not support such identification, the function\n returns the user-specified default value.\n\n There is no guarantee that the thread will stay on the same type of core for\n any time. Callers should treat the result as only a hint."] - pub fn cpuinfo_get_current_uarch_index_with_default(default_uarch_index: u32) -> u32; -} diff --git a/src/lib.rs b/src/lib.rs index 02de504..4b17a24 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,11 @@ #![doc = include_str!("../README.md")] -mod bindings; +mod bindings { + #![allow(non_upper_case_globals, non_snake_case, non_camel_case_types)] + #![allow(dead_code)] + + include!(concat!(env!("OUT_DIR"), "/bindings.rs")); +} use bindings::*; use std::borrow::Cow; @@ -39,9 +44,20 @@ impl CpuInfo { for i in 0..count { let uarch_info = unsafe { cpuinfo_get_uarch(i) }; infos.push(unsafe { + #[cfg(any(target_arch = "x86_64", target_arch = "x86"))] + let cpuid = Some((*uarch_info).cpuid); + #[cfg(all(not(target_arch = "x86_64"), not(target_arch = "x86")))] + let cpuid = None; + + #[cfg(any(target_arch = "aarch64", target_arch = "arm"))] + let midr = Some((*uarch_info).midr); + #[cfg(all(not(target_arch = "aarch64"), not(target_arch = "arm")))] + let midr = None; + UarchInfo { uarch: Self::uarch((*uarch_info).uarch), - cpuid: (*uarch_info).cpuid, + cpuid, + midr, processor_count: (*uarch_info).processor_count, core_count: (*uarch_info).core_count, } @@ -72,6 +88,16 @@ impl CpuInfo { } fn cluster(cluster: *const cpuinfo_cluster, package: Arc) -> Arc { + #[cfg(any(target_arch = "x86_64", target_arch = "x86"))] + let cpuid = Some(unsafe { (*cluster).cpuid }); + #[cfg(all(not(target_arch = "x86_64"), not(target_arch = "x86")))] + let cpuid = None; + + #[cfg(any(target_arch = "aarch64", target_arch = "arm"))] + let midr = Some(unsafe { (*cluster).midr }); + #[cfg(all(not(target_arch = "aarch64"), not(target_arch = "arm")))] + let midr = None; + Arc::new(unsafe { Cluster { processor_start: (*cluster).processor_start, @@ -82,7 +108,8 @@ impl CpuInfo { package: package.clone(), vendor: Self::vendor((*cluster).vendor), uarch: Self::uarch((*cluster).uarch), - cpuid: (*cluster).cpuid, + cpuid, + midr, frequency: (*cluster).frequency, } }) @@ -96,6 +123,16 @@ impl CpuInfo { } fn core(core: *const cpuinfo_core, cluster: Arc, package: Arc) -> Arc { + #[cfg(any(target_arch = "x86_64", target_arch = "x86"))] + let cpuid = Some(unsafe { (*core).cpuid }); + #[cfg(all(not(target_arch = "x86_64"), not(target_arch = "x86")))] + let cpuid = None; + + #[cfg(any(target_arch = "aarch64", target_arch = "arm"))] + let midr = Some(unsafe { (*core).midr }); + #[cfg(all(not(target_arch = "aarch64"), not(target_arch = "arm")))] + let midr = None; + Arc::new(unsafe { Core { processor_start: (*core).processor_start, @@ -105,7 +142,8 @@ impl CpuInfo { package, vendor: Self::vendor((*core).vendor), uarch: Self::uarch((*core).uarch), - cpuid: (*core).cpuid, + cpuid, + midr, frequency: (*core).frequency, } }) @@ -169,15 +207,36 @@ impl CpuInfo { package.clone(), ); + #[cfg(target_os = "linux")] + let linux_id = Some(unsafe { (*processor).linux_id }); + #[cfg(not(target_os = "linux"))] + let linux_id = None; + + #[cfg(target_os = "windows")] + let (windows_group_id, windows_processor_id) = { + ( + Some(unsafe { (*processor).windows_group_id }), + Some(unsafe { (*processor).windows_processor_id }), + ) + }; + #[cfg(not(target_os = "windows"))] + let (windows_group_id, windows_processor_id) = (None, None); + + #[cfg(any(target_arch = "x86_64", target_arch = "x86"))] + let apic_id = Some(unsafe { (*processor).apic_id }); + #[cfg(all(not(target_arch = "x86_64"), not(target_arch = "x86")))] + let apic_id = None; + processors.push(unsafe { Processor { smt_id: (*processor).smt_id, core, cluster, package, - windows_group_id: (*processor).windows_group_id, - windows_processor_id: (*processor).windows_processor_id, - apic_id: (*processor).apic_id, + linux_id, + windows_group_id, + windows_processor_id, + apic_id, cache: Self::cache_info(&(*processor).cache), } }) @@ -218,12 +277,14 @@ pub struct Processor { pub cluster: Arc, #[doc = " Physical package containing this logical processor"] pub package: Arc, + #[doc = " Linux-specific ID for the logical processor:\n - Linux kernel exposes information about this logical processor in /sys/devices/system/cpu/cpu/ \n - Bit in the cpu_set_t identifies this logical processor"] + pub linux_id: Option, #[doc = " Windows-specific ID for the group containing the logical processor."] - pub windows_group_id: u16, + pub windows_group_id: Option, #[doc = " Windows-specific ID of the logical processor within its group:\n - Bit in the KAFFINITY mask identifies this\n logical processor within its group."] - pub windows_processor_id: u16, + pub windows_processor_id: Option, #[doc = " APIC ID (unique x86-specific ID of the logical processor)"] - pub apic_id: u32, + pub apic_id: Option, pub cache: CacheInfo, } @@ -264,8 +325,10 @@ pub struct Core { pub vendor: Vendor, #[doc = " CPU microarchitecture for this core"] pub uarch: Uarch, - #[doc = " Value of CPUID leaf 1 EAX register for this core"] - pub cpuid: u32, + #[doc = " Value of CPUID leaf 1 EAX register for this core (x86/x64-specific ID)"] + pub cpuid: Option, + #[doc = " Value of Main ID Register (MIDR) for this core (arm/aarch64-specific ID)"] + pub midr: Option, #[doc = " Clock rate (non-Turbo) of the core, in Hz"] pub frequency: u64, } @@ -288,8 +351,10 @@ pub struct Cluster { pub vendor: Vendor, #[doc = " CPU microarchitecture of the cores in the cluster"] pub uarch: Uarch, - #[doc = " Value of CPUID leaf 1 EAX register of the cores in the cluster"] - pub cpuid: u32, + #[doc = " Value of CPUID leaf 1 EAX register for this core (x86/x64-specific ID)"] + pub cpuid: Option, + #[doc = " Value of Main ID Register (MIDR) for this core (arm/aarch64-specific ID)"] + pub midr: Option, #[doc = " Clock rate (non-Turbo) of the cores in the cluster, in Hz"] pub frequency: u64, } @@ -325,8 +390,10 @@ pub struct Uarch { pub struct UarchInfo { #[doc = " Type of CPU microarchitecture"] pub uarch: Uarch, - #[doc = " Value of CPUID leaf 1 EAX register for the microarchitecture"] - pub cpuid: u32, + #[doc = " Value of CPUID leaf 1 EAX register for the microarchitecture (x86/x64-specific ID)"] + pub cpuid: Option, + #[doc = " Value of Main ID Register (MIDR) for this core (arm/aarch64-specific ID)"] + pub midr: Option, #[doc = " Number of logical processors with the microarchitecture"] pub processor_count: u32, #[doc = " Number of cores with the microarchitecture"]