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

source

pub fn with_at_least(size: usize) -> Result<Self>

Create a new Mmap pointing to at least size bytes of page-aligned accessible memory.

source

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.

source

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.

source

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.

source

pub unsafe fn slice(&self, range: Range<usize>) -> &[u8]

Return the allocated memory as a slice of u8.

§Safety

The caller must ensure that the range of bytes is accessible to the program and additionally has previously been initialized.

§Panics

Panics of the range provided is outside of the limits of this mmap.

source

pub unsafe fn slice_mut(&mut self, range: Range<usize>) -> &mut [u8]

Return the allocated memory as a mutable slice of u8.

§Safety

The caller must ensure that the range of bytes is accessible to the program and additionally has previously been initialized.

§Panics

Panics of the range provided is outside of the limits of this mmap.

source

pub fn as_ptr(&self) -> *const u8

Return the allocated memory as a pointer to u8.

source

pub fn as_mut_ptr(&mut self) -> *mut u8

Return the allocated memory as a mutable pointer to u8.

source

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.

source

pub fn is_empty(&self) -> bool

Return whether any memory has been allocated or reserved.

source

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.

source

pub unsafe fn make_readonly(&self, range: Range<usize>) -> Result<()>

Makes the specified range within this Mmap to be readonly.

source

pub fn original_file(&self) -> Option<&Arc<File>>

Returns the underlying file that this mmap is mapping, if present.

Trait Implementations§

source§

impl Debug for Mmap

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Mmap

§

impl RefUnwindSafe for Mmap

§

impl Send for Mmap

§

impl Sync for Mmap

§

impl Unpin for Mmap

§

impl UnwindSafe for Mmap

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.