Struct MmWithUserAsync

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

A wrapper for the kernel’s struct mm_struct.

This type is identical to MmWithUser except that it uses mmput_async when dropping a refcount. This means that the destructor of ARef<MmWithUserAsync> is safe to call in atomic context.

§Invariants

Values of this type are always refcounted using mmget. The value of mm_users is non-zero.

Methods from Deref<Target = MmWithUser>§

Source

pub fn lock_vma_under_rcu(&self, vma_addr: usize) -> Option<VmaReadGuard<'_>>

Attempt to access a vma using the vma read lock.

This is an optimistic trylock operation, so it may fail if there is contention. In that case, you should fall back to taking the mmap read lock.

When per-vma locks are disabled, this always returns None.

Source

pub fn mmap_read_lock(&self) -> MmapReadGuard<'_>

Lock the mmap read lock.

Source

pub fn mmap_read_trylock(&self) -> Option<MmapReadGuard<'_>>

Try to lock the mmap read lock.

Methods from Deref<Target = Mm>§

Source

pub fn as_raw(&self) -> *mut mm_struct

Returns a raw pointer to the inner mm_struct.

Source

pub fn mmget_not_zero(&self) -> Option<ARef<MmWithUser>>

Calls mmget_not_zero and returns a handle if it succeeds.

Trait Implementations§

Source§

impl AlwaysRefCounted for MmWithUserAsync

Source§

fn inc_ref(&self)

Increments the reference count on the object.
Source§

unsafe fn dec_ref(obj: NonNull<Self>)

Decrements the reference count on the object. Read more
Source§

impl Deref for MmWithUserAsync

Source§

type Target = MmWithUser

The resulting type after dereferencing.
Source§

fn deref(&self) -> &MmWithUser

Dereferences the value.
Source§

impl Send for MmWithUserAsync

Source§

impl Sync for MmWithUserAsync

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, E> Init<T, E> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. 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, E> PinInit<T, E> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.