MmapRegion

Struct MmapRegion 

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

File-backed memory-mapped region for cross-process shared memory.

shm[impl shm.file.mmap-posix]

Implementations§

Source§

impl MmapRegion

Source

pub fn create(path: &Path, size: usize, cleanup: FileCleanup) -> Result<Self>

Create a new file-backed region.

This creates the file, truncates it to the given size, and maps it into memory with MAP_SHARED. The file is created with permissions 0600.

shm[impl shm.file.create] shm[impl shm.file.permissions]

Source

pub fn attach(path: &Path) -> Result<Self>

Attach to an existing file-backed region.

This opens the file and maps it into memory with MAP_SHARED. The file size determines the mapping size.

shm[impl shm.file.attach]

Source

pub fn region(&self) -> Region

Get a Region view of this mmap.

Source

pub fn len(&self) -> usize

Get the size of the region in bytes.

Source

pub fn is_empty(&self) -> bool

Returns true if the region is empty (zero bytes).

Source

pub fn path(&self) -> &Path

Get the path to the backing file.

Source

pub fn take_ownership(&mut self)

Take ownership of the file for cleanup purposes.

After calling this, the file will be deleted when this region is dropped.

Source

pub fn release_ownership(&mut self)

Release ownership of the file.

After calling this, the file will NOT be deleted when this region is dropped.

Source

pub fn resize(&mut self, new_size: usize) -> Result<()>

Resize the region by growing the backing file and remapping.

This is typically a host-only operation. The base pointer may change, so callers must update any cached Region references after calling this.

§Errors

Returns an error if the new size is smaller than current size (shrinking is not supported), or if the underlying file/mmap operations fail.

shm[impl shm.varslot.extents]

Source

pub fn check_and_remap(&mut self) -> Result<bool>

Check if the backing file has grown and remap if needed.

This is useful for guests to detect when the host has grown the segment. Returns true if the region was remapped, false if no change.

§Errors

Returns an error if file metadata cannot be read or remapping fails.

Trait Implementations§

Source§

impl Drop for MmapRegion

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for MmapRegion

Source§

impl Sync for MmapRegion

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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>,

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more