sel4

Struct AbsoluteCPtr

Source
pub struct AbsoluteCPtr<C = NoExplicitInvocationContext> { /* private fields */ }
Expand description

A CPtrWithDepth to be resolved in the context of a particular CNode.

AbsoluteCPtr addresses capability slots in a more general way than Cap. It allows one to address any capability slot that is directly addressable from any CNode that is directly addressible in the current thread’s CSpace. Furthermore, it allows one to address capability slots that contain CNodes by limiting the lookup depth to prevent the kernel’s lookup procedure from descending into the CNode contained in that slot.

seL4_CNode_* capability invocations are methods of AbsoluteCPtr rather than Cap.

In addition to AbsoluteCPtr::new, the following methods can be used to construct an AbsoluteCPtr:

Implementations§

Source§

impl<C> AbsoluteCPtr<C>

Source

pub const fn new(root: CNode<C>, path: CPtrWithDepth) -> Self

Source

pub const fn root(&self) -> &CNode<C>

Source

pub fn into_root(self) -> CNode<C>

Source

pub const fn path(&self) -> &CPtrWithDepth

Source

pub fn with<C1>(self, context: C1) -> AbsoluteCPtr<C1>

Source

pub fn without_context(self) -> AbsoluteCPtr

Source§

impl<C: InvocationContext> AbsoluteCPtr<C>

Source

pub fn revoke(self) -> Result<()>

Corresponds to seL4_CNode_Revoke.

Source

pub fn delete(self) -> Result<()>

Corresponds to seL4_CNode_Delete.

Source

pub fn copy(self, src: &AbsoluteCPtr, rights: CapRights) -> Result<()>

Corresponds to seL4_CNode_Copy.

Source

pub fn mint( self, src: &AbsoluteCPtr, rights: CapRights, badge: Word, ) -> Result<()>

Corresponds to seL4_CNode_Mint.

Source

pub fn move_(self, src: &AbsoluteCPtr) -> Result<()>

Corresponds to seL4_CNode_Move.

Source

pub fn mutate(self, src: &AbsoluteCPtr, badge: Word) -> Result<()>

Corresponds to seL4_CNode_Mutate.

Source

pub fn save_caller(self) -> Result<()>

Corresponds to seL4_CNode_SaveCaller.

Trait Implementations§

Source§

impl<C: Clone> Clone for AbsoluteCPtr<C>

Source§

fn clone(&self) -> AbsoluteCPtr<C>

Returns a copy of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C: Debug> Debug for AbsoluteCPtr<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C: PartialEq> PartialEq for AbsoluteCPtr<C>

Source§

fn eq(&self, other: &AbsoluteCPtr<C>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<C: Copy> Copy for AbsoluteCPtr<C>

Source§

impl<C: Eq> Eq for AbsoluteCPtr<C>

Source§

impl<C> StructuralPartialEq for AbsoluteCPtr<C>

Auto Trait Implementations§

§

impl<C> Freeze for AbsoluteCPtr<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for AbsoluteCPtr<C>
where C: RefUnwindSafe,

§

impl<C> Send for AbsoluteCPtr<C>
where C: Send,

§

impl<C> Sync for AbsoluteCPtr<C>
where C: Sync,

§

impl<C> Unpin for AbsoluteCPtr<C>
where C: Unpin,

§

impl<C> UnwindSafe for AbsoluteCPtr<C>
where C: UnwindSafe,

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.