8个版本
0.2.3 | 2022年6月20日 |
---|---|
0.2.2 | 2022年3月24日 |
0.2.0 | 2022年2月25日 |
0.1.3 | 2021年12月16日 |
#413 in 内存管理
每月下载 43次
14KB
259 行
pkey_mprotect
类型化的 pkey_mprotect
包装器。
仅在支持内存保护键的Linux CPU上工作
MSRV:1.59(由于const panics和asm!
宏)
示例
use pkey_mprotect::*;
struct Keys {
my_key: [u8; 32],
}
fn main() {
// Protection keys instance is needed to create regions.
// NOTE: You probably should always reuse it because there
// are only 15 available keys in system
let pkey = ProtectionKeys::new(true).unwrap();
// Protected region is a thread-safe wrapper around mmaped
// memory which was secured with `pkey_mprotect`
let region = pkey.make_region(Keys {
my_key: [42; 32],
}).unwrap();
// To read the data you must lock the region. Access is
// granted only for the duration of the guards lifetime
{
let region = region.lock();
println!("{:?}", region.my_key);
}
}
依赖项
~0.4–1MB
~21K SLoC