A Rust library for dealing with memory regions.
It is implemented using platform specific APIs (e.g VirtualQuery
,
VirtualLock
, mprotect
, mlock
).
This library has (so far) support for: - Windows - Linux & Android - macOS & iOS - FreeBSD
Add this to your Cargo.toml
:
toml
[dependencies]
region = "2.1.2"
and this to your crate root:
rust
extern crate region;
// 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.asptr())?; let qr = region::queryrange(data.as_ptr(), data.len())?;
// VirtualProtect | mprotect region::protect(data.as_ptr(), data.len(), Protection::ReadWriteExecute)?;
// ... you can also temporarily change a region's protection let handle = region::protectwithhandle(data.as_ptr(), data.len(), Protection::ReadWriteExecute)?;
// VirtualLock | mlock let guard = region::lock(data.as_ptr(), data.len())?; ```