#x86-64 #kvm #vm #os

nightly macro x86test-macro

x86test的过程宏插件

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

MIT/Apache

11KB
154

x86 / amd64 库 Crates.io docs.rs/x86 标准检查

用于编程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