MmapOptions

Struct MmapOptions 

Source
pub struct MmapOptions { /* private fields */ }
Expand description

Configuration for creating a memory mapping.

Implementations§

Source§

impl MmapOptions

Source

pub const fn new() -> Self

Creates a new MmapOptions with default settings (length 0). You must set a length before mapping.

Source

pub const fn len(self, len: usize) -> Self

Sets the length of the mapping in bytes.

Source

pub const fn with_hint(self, addr: usize) -> Self

Sets a hint address for the mapping.

This is a request to the OS to place the mapping at this specific virtual address. The OS is not required to honor this request (on some platforms), or the call may fail if the address is already in use or invalid.

For the best chance of success:

  • The address should be aligned to allocation_granularity().
  • The address range [hint_addr, hint_addr + len) should be free.
Source

pub const fn populate(self, populate: bool) -> Self

Sets whether to pre-populate (prefault) the page tables.

On Linux, this adds MAP_POPULATE.

Source

pub const fn no_reserve(self, no_reserve: bool) -> Self

Sets whether to reserve swap space (on supported platforms).

On Linux, this adds MAP_NORESERVE.

Source

pub const fn strict(self, strict: bool) -> Self

Sets whether the hint address is strict.

If true, map_anon will return an error if the OS cannot map the memory at the exact requested hint_addr.

Source

pub unsafe fn map_anon(&self) -> Result<Mmap>

Creates an anonymous memory map.

§Safety

This function is unsafe because it creates a raw memory mapping which has implications for memory safety (e.g. use-after-free if the Mmap is dropped while valid pointers into it still exist - though Mmap itself is safe, using the raw pointer it yields requires care).

Actually, Mmap owns the memory, so as long as Mmap is alive, the pointer is valid. However, sys_alloc is a low-level crate, so we mark creation as unsafe mostly because of the OS interactions and potential for UB if hint_addr is misused in some extensive contexts (though simply asking for an addr is usually safe).

§Errors

Returns an error if the length is 0, or if the system call fails (e.g. out of memory), or if strict hint compliance is requested but cannot be satisfied.

Trait Implementations§

Source§

impl Clone for MmapOptions

Source§

fn clone(&self) -> MmapOptions

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MmapOptions

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for MmapOptions

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.