Struct kernel::grant::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>(&mut 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> !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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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> SizedTypeProperties for T

source§

const IS_ZST: bool = size_of::<Self>() == 0

🔬This is a nightly-only experimental API. (sized_type_properties)
true if this type requires no storage. false if its size is greater than zero. Read more
source§

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

§

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 Twhere U: TryFrom<T>,

§

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.