8个稳定版本
1.2.1 | 2021年11月10日 |
---|---|
1.1.0 | 2021年10月14日 |
1.0.4 | 2021年8月11日 |
1.0.2 | 2021年7月7日 |
#188 在 无标准库
10KB
80 行
Rust库 runs_inside_qemu
runs_inside_qemu
是一个小的 no_std
-库,用于检查二进制文件是否在QEMU虚拟机中运行。它不需要堆分配,并且仅适用于 x86
/x86_64
平台。
在底层,这是一个围绕优秀的crate https://crates.io/crates/raw-cpuid 的包装器。
此crate是用 rustc 1.55.0-nightly
构建/测试的。只要内联汇编不是稳定Rust的一部分,它就不会在稳定版本上工作。
示例代码
use runs_inside_qemu::runs_inside_qemu;
fn main() {
// If we are in QEMU, we use the nice "debugcon"-feature which maps
// the x86 I/O-port `0xe9` to stdout or a file.
if runs_inside_qemu() {
unsafe {
x86::io::outb(0xe9, b'H');
x86::io::outb(0xe9, b'e');
x86::io::outb(0xe9, b'l');
x86::io::outb(0xe9, b'l');
x86::io::outb(0xe9, b'o');
x86::io::outb(0xe9, b'\n');
}
}
}
局限性
如果你将 -cpu host
传递给QEMU,则此功能将不起作用,因为在这种情况下CPU品牌字符串不是 "QEMU Virtual CPU version 2.5+"。
Rust版本 / MSRV
此crate需要nightly工具链。使用Rust 1.56.1稳定版本时,无法构建。
依赖项
~690KB
~13K SLoC