Struct wasmtime_runtime::Mmap
source · pub struct Mmap { /* private fields */ }
Expand description
A simple struct consisting of a page-aligned pointer to page-aligned and initially-zeroed memory and a length.
Implementations§
source§impl Mmap
impl Mmap
sourcepub fn with_at_least(size: usize) -> Result<Self>
pub fn with_at_least(size: usize) -> Result<Self>
Create a new Mmap
pointing to at least size
bytes of page-aligned
accessible memory.
sourcepub fn from_file(path: &Path) -> Result<Self>
pub fn from_file(path: &Path) -> Result<Self>
Creates a new Mmap
by opening the file located at path
and mapping
it into memory.
The memory is mapped in read-only mode for the entire file. If portions
of the file need to be modified then the region
crate can be use to
alter permissions of each page.
The memory mapping and the length of the file within the mapping are returned.
sourcepub fn accessible_reserved(
accessible_size: usize,
mapping_size: usize
) -> Result<Self>
pub fn accessible_reserved( accessible_size: usize, mapping_size: usize ) -> Result<Self>
Create a new Mmap
pointing to accessible_size
bytes of page-aligned
accessible memory, within a reserved mapping of mapping_size
bytes.
accessible_size
and mapping_size
must be native page-size multiples.
Panics
This function will panic if accessible_size
is greater than
mapping_size
or if either of them are not page-aligned.
sourcepub fn make_accessible(&mut self, start: usize, len: usize) -> Result<()>
pub fn make_accessible(&mut self, start: usize, len: usize) -> Result<()>
Make the memory starting at start
and extending for len
bytes
accessible. start
and len
must be native page-size multiples and
describe a range within self
’s reserved memory.
Panics
This function will panic if start
or len
is not page aligned or if
either are outside the bounds of this mapping.
sourcepub fn as_mut_ptr(&mut self) -> *mut u8
pub fn as_mut_ptr(&mut self) -> *mut u8
Return the allocated memory as a mutable pointer to u8.
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Return the length of the allocated memory.
This is the byte length of this entire mapping which includes both addressible and non-addressible memory.
sourcepub unsafe fn make_executable(
&self,
range: Range<usize>,
enable_branch_protection: bool
) -> Result<()>
pub unsafe fn make_executable( &self, range: Range<usize>, enable_branch_protection: bool ) -> Result<()>
Makes the specified range
within this Mmap
to be read/execute.
Unsafety
This method is unsafe as it’s generally not valid to simply make memory executable, so it’s up to the caller to ensure that everything is in order and this doesn’t overlap with other memory that should only be read or only read/write.
Panics
Panics of range
is out-of-bounds or not page-aligned.
sourcepub unsafe fn make_readonly(&self, range: Range<usize>) -> Result<()>
pub unsafe fn make_readonly(&self, range: Range<usize>) -> Result<()>
Makes the specified range
within this Mmap
to be readonly.
sourcepub fn original_file(&self) -> Option<&Arc<File>>
pub fn original_file(&self) -> Option<&Arc<File>>
Returns the underlying file that this mmap is mapping, if present.