Struct wasmtime_runtime::mpk::ProtectionKey
source · pub struct ProtectionKey { /* private fields */ }
Expand description
An MPK protection key.
The expected usage is:
- receive system-allocated keys from
keys
- mark some regions of memory as accessible with
ProtectionKey::protect
allow
or disallow access to the memory regions using aProtectionMask
; any accesses to unmarked pages result in a fault- drop the key
Implementations§
source§impl ProtectionKey
impl ProtectionKey
sourcepub fn protect(&self, region: &mut [u8]) -> Result<()>
pub fn protect(&self, region: &mut [u8]) -> Result<()>
Mark a page as protected by this ProtectionKey
.
This “colors” the pages of region
via a kernel pkey_mprotect
call to
only allow reads and writes when this ProtectionKey
is activated
(see allow
).
§Errors
This will fail if the region is not page aligned or for some unknown kernel reason.
sourcepub fn as_stripe(&self) -> usize
pub fn as_stripe(&self) -> usize
Convert the ProtectionKey
to its 0-based index; this is useful for
determining which allocation “stripe” a key belongs to.
This function assumes that the kernel has allocated key 0 for itself.
Trait Implementations§
source§impl Clone for ProtectionKey
impl Clone for ProtectionKey
source§fn clone(&self) -> ProtectionKey
fn clone(&self) -> ProtectionKey
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for ProtectionKey
impl Debug for ProtectionKey
impl Copy for ProtectionKey
Auto Trait Implementations§
impl Freeze for ProtectionKey
impl RefUnwindSafe for ProtectionKey
impl Send for ProtectionKey
impl Sync for ProtectionKey
impl Unpin for ProtectionKey
impl UnwindSafe for ProtectionKey
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more