A Rust library for dealing with memory regions.
It is implemented using platform specific APIs (e.g VirtualQuery
, VirtualLock
, mprotect
, mlock
).
This library provides CI for the following targets:
aarch64-linux-android
armv7-unknown-linux-gnueabihf
i686-unknown-linux-gnu
x86_64-unknown-linux-gnu
x86_64-pc-windows-gnu
x86_64-pc-windows-msvc
x86_64-apple-darwin
x86_64-unknown-freebsd
Add this to your Cargo.toml
:
[dependencies] region = "2.2.0"
and this to your crate root:
extern crate region;
let data = [0xDE, 0xAD, 0xBE, 0xEF]; // Page size let pz = region::page::size(); let pc = region::page::ceil(1234); let pf = region::page::floor(1234); // VirtualQuery | '/proc/self/maps' let q = region::query(data.as_ptr())?; let qr = region::query_range(data.as_ptr(), data.len())?; // VirtualProtect | mprotect region::protect(data.as_ptr(), data.len(), Protection::READ_WRITE_EXECUTE)?; // ... you can also temporarily change a region's protection let handle = region::protect_with_handle(data.as_ptr(), data.len(), Protection::READ_WRITE_EXECUTE)?; // VirtualLock | mlock let guard = region::lock(data.as_ptr(), data.len())?;