#x86 #cpuid #libcore #parser #no-alloc #os

no-std bin+lib raw-cpuid

一个用于解析 x86 CPUID 指令的库,用 Rust 编写,无外部依赖。该实现与英特尔 CPUID 手册描述非常相似。库仅依赖于 libcore。

49 个版本 (稳定)

11.1.0 2024 年 7 月 16 日
11.0.1 2023 年 5 月 3 日
10.7.0 2023 年 2 月 27 日
10.6.0 2022 年 9 月 12 日
0.0.2 2015 年 3 月 24 日

#4硬件支持

Download history 321863/week @ 2024-05-03 369129/week @ 2024-05-10 401269/week @ 2024-05-17 425804/week @ 2024-05-24 478442/week @ 2024-05-31 461498/week @ 2024-06-07 411451/week @ 2024-06-14 437709/week @ 2024-06-21 428786/week @ 2024-06-28 452721/week @ 2024-07-05 457457/week @ 2024-07-12 475487/week @ 2024-07-19 471627/week @ 2024-07-26 472053/week @ 2024-08-02 552337/week @ 2024-08-09 577202/week @ 2024-08-16

2,163,781 每月下载量
用于 1,145 个 Crates (58 直接)

MIT 许可证

510KB
9K SLoC

cpuid Crates.io 标准检查

一个用于解析 x86 CPUID 指令的库,用 Rust 编写,无外部依赖。该实现与英特尔 CPUID 手册描述非常相似。库在 no_std 环境中运行。一些附加的 cargo 功能需要 std (例如,美化打印,序列化)。

  • 对于英特尔平台:代码应与英特尔架构 SDM 的 2018 年 3 月修订版同步。
  • 对于 AMD 平台,它应与 AMD64 系统手册 No. 24594 的修订版 3.32 (2021 年 3 月) 保持一致。

库使用

use raw_cpuid::CpuId;
let cpuid = CpuId::new();

if let Some(vf) = cpuid.get_vendor_info() {
    assert!(vf.as_str() == "GenuineIntel" || vf.as_str() == "AuthenticAMD");
}

let has_sse = cpuid.get_feature_info().map_or(false, |finfo| finfo.has_sse());
if has_sse {
    println!("CPU supports SSE!");
}

if let Some(cparams) = cpuid.get_cache_parameters() {
    for cache in cparams {
        let size = cache.associativity() * cache.physical_line_partitions() * cache.coherency_line_size() * cache.sets();
        println!("L{}-Cache size is {}", cache.level(), size);
    }
} else {
    println!("No cache parameter information available")
}

cpuid 二进制文件

raw-cpuid 随附一个 cpuid 二进制文件,可以安装到宿主系统以检查 CPUID 指令的输出。

要安装,请使用

cargo install raw-cpuid --features cli

由于 cargo 限制,当前需要 cli 功能来构建二进制版本。

文档

依赖关系

~0–12MB
~69K SLoC