kernel::grant

Struct CustomGrant

Source
pub struct CustomGrant<T> { /* private fields */ }
Expand description

Grant which was allocated from the kernel-owned grant region in a specific process’s memory, separately from a normal Grant.

A CustomGrant allows a capsule to allocate additional memory on behalf of a process.

Implementations§

Source§

impl<T> CustomGrant<T>

Source

pub fn processid(&self) -> ProcessId

Helper function to get the ProcessId from the custom grant.

Source

pub fn enter<F, R>(&self, fun: F) -> Result<R, Error>
where F: FnOnce(GrantData<'_, T>) -> R,

Gives access to inner data within the given closure.

If the process has since been restarted or crashed, or the memory is otherwise no longer present, then this function will not call the given closure, and will instead directly return Err(Error::NoSuchApp).

Because this function requires &mut self, it should be impossible to access the inner data of a given CustomGrant reentrantly. Thus the reentrance detection we use for non-custom grants is not needed here.

Auto Trait Implementations§

§

impl<T> Freeze for CustomGrant<T>

§

impl<T> !RefUnwindSafe for CustomGrant<T>

§

impl<T> !Send for CustomGrant<T>

§

impl<T> !Sync for CustomGrant<T>

§

impl<T> Unpin for CustomGrant<T>
where T: Unpin,

§

impl<T> !UnwindSafe for CustomGrant<T>

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 = 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.