5个版本
0.0.5 | 2022年3月3日 |
---|---|
0.0.4 | 2022年1月25日 |
0.0.3 | 2020年4月24日 |
0.0.2 | 2019年9月12日 |
0.0.1 | 2019年8月24日 |
#21 in #amd64
用于 x86test
11KB
154 行
x86 / amd64 库
用于编程x86 (amd64) 硬件的库。包含x86特定的数据结构描述、数据表,以及调用通常在高级语言中未公开的汇编指令的便利函数。
目前支持
- I/O 寄存器
- 控制寄存器
- 调试寄存器
- MSR 寄存器
- 分段
- 描述符表(GDT、LDT、IDT)
- IA32-e 页表布局
- 中断(带xAPIC和x2APIC、I/O APIC 驱动程序)
- 任务状态
- 性能计数器信息
- Intel SGX:软件保护扩展
- 随机数(rdrand、rdseed)
- 时间(rdtsc、rdtscp)
- 查询CPUID(使用raw_cpuid 库)
- 事务性内存(Intel RTM 和 HLE)
- 虚拟化(Intel VMX)
此库依赖于libcore,因此可以在内核代码中使用。
测试
我们对crate使用两种测试形式。带有 #[test]
的常规测试,在环3进程中运行,以及 #[x86test]
测试,在虚拟机(因此提供特权执行环境,参见x86test)中运行。
# To execute x86tests run:
$ RUSTFLAGS="-C relocation-model=dynamic-no-pic -C code-model=kernel" RUST_BACKTRACE=1 cargo test --features vmtest
# To execute the regular tests, run:
$ cargo test --features utest
功能
- performance-counter:包含性能计数器信息。注意,由于包含在源代码中的大型静态生成的哈希表,此功能可能会显著增加编译时间。因此,默认情况下已禁用。
文档
lib.rs
:
此实现用于运行和自定义基于KVM的单元测试的执行。
依赖项
~4.5MB
~66K SLoC