Skip to main content

SharedMemory

Struct SharedMemory 

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

Shared memory segment for zero-copy IPC

Implementations§

Source§

impl SharedMemory

Source

pub fn create(name: &str, size: usize) -> Result<Self, IpcError>

Create a new shared memory segment.

Sizes the object with ftruncate and then reserves its backing store, so a segment larger than the store can hold fails here — as the kernel’s ENOSPC — instead of raising SIGBUS in whichever process first writes an unbacked page. reserve_backing_store covers the Unix targets that cannot make that reservation.

Source

pub fn open(name: &str, size: usize) -> Result<Self, IpcError>

Open an existing shared memory segment.

Fails with IpcError::InvalidArgument if the segment is smaller than size. mmap accepts a length past the end of the object, but the pages beyond it are not backed: reading them raises SIGBUS, so an unchecked mapping would hand out an as_slice that faults instead of reading.

Source

pub unsafe fn as_slice(&self) -> &[u8] ⓘ

Get a slice of the shared memory.

§Safety

For as long as the returned slice lives, no other handle to this segment – in this process or another – may write it. A second handle maps the same pages through an address the borrow checker cannot connect to this one, so the exclusion is the caller’s to arrange (see the module docs). Use SharedQueue when another party is an active writer.

Source

pub unsafe fn as_mut_slice(&mut self) -> &mut [u8] ⓘ

Get a mutable slice of the shared memory.

§Safety

For as long as the returned slice lives, no other handle to this segment – in this process or another – may read or write it (see as_slice and the module docs).

Trait Implementations§

Source§

impl Drop for SharedMemory

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Send for SharedMemory

Source§

impl Sync for SharedMemory

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

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

fn try_from(value: U) -> Result<T, !>

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.