5 个稳定版本
1.2.1 | 2022年11月18日 |
---|---|
1.2.0 | 2022年10月6日 |
1.1.1 | 2022年9月15日 |
1.1.0 | 2022年9月13日 |
1.0.0 | 2022年9月13日 |
#10 in #tester
29 每月下载量
用于 memtester
17KB
423 代码行
libmemtester-rs
本项目是一个用于测试内存的 Rust 库。它是 memtester 的 Rust 版本。
本库的目标是提供一个跨平台的内存测试器(已在 Linux 和 Windows 上测试过),可用于其他项目。
它通过分配一大块内存,并向其写入一个模式。然后读取内存并检查该模式是否正确。它对多个不同的模式进行此操作。如果内存有故障,它会检测到并返回一个包含故障地址和它们故障次数的哈希表。
为了防止操作系统交换内存和移动页面,此库会将内存锁定(在 Linux 上使用 mlock
系统调用,在 Windows 上使用 VirtualLock
)。为此,需要以 root 用户运行此库。
⌨ 使用方法
use libmemtester::MemoryTests;
fn main() {
// The size to allocate in bytes (must be divisible by 16)
let size_to_allocate = 1024 * 1024 * 1024; // 1GB
let debug_prints = false; // If you want the debug prints
// Create a new MemTester instance
let mem_tests_res = MemoryTests::new(size_to_allocate, debug_prints);
// Checking if there were any errors when allocating the memory
if let Err(e) = mem_tests {
println!("Error: {}", e);
return;
}
let tests = mem_tests.unwrap();
// We run the tests by calling an iterator
// This way you can stop the tests when one fails
// or simply display information as the tests goes along
for let Some((test_name, error_count)) in tests.get_iterator() {
println!("Test: {} - Error count: {}", test_name, error_count);
}
// When the iterator is done, we can get the results
// This will return a hashmap of the faulty addresses and the number of times they were faulty
let errors = tests.get_errors();
println!("Errors: {:#?}", errors);
}
您可以在 memtester-rs 中查看此库的示例。
📃 许可协议
本项目采用 GPLv3 许可协议 - 请参阅 LICENSE 文件以获取详细信息
依赖关系
~0.2–0.9MB
~14K SLoC