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>
impl<C> AbsoluteCPtr<C>
pub const fn new(root: CNode<C>, path: CPtrWithDepth) -> Self
pub const fn root(&self) -> &CNode<C>
pub fn into_root(self) -> CNode<C>
pub const fn path(&self) -> &CPtrWithDepth
pub fn with<C1>(self, context: C1) -> AbsoluteCPtr<C1>
pub fn without_context(self) -> AbsoluteCPtr
Source§impl<C: InvocationContext> AbsoluteCPtr<C>
impl<C: InvocationContext> AbsoluteCPtr<C>
Sourcepub fn copy(self, src: &AbsoluteCPtr, rights: CapRights) -> Result<()>
pub fn copy(self, src: &AbsoluteCPtr, rights: CapRights) -> Result<()>
Corresponds to seL4_CNode_Copy
.
Sourcepub fn mint(
self,
src: &AbsoluteCPtr,
rights: CapRights,
badge: Word,
) -> Result<()>
pub fn mint( self, src: &AbsoluteCPtr, rights: CapRights, badge: Word, ) -> Result<()>
Corresponds to seL4_CNode_Mint
.
Sourcepub fn move_(self, src: &AbsoluteCPtr) -> Result<()>
pub fn move_(self, src: &AbsoluteCPtr) -> Result<()>
Corresponds to seL4_CNode_Move
.
Sourcepub fn mutate(self, src: &AbsoluteCPtr, badge: Word) -> Result<()>
pub fn mutate(self, src: &AbsoluteCPtr, badge: Word) -> Result<()>
Corresponds to seL4_CNode_Mutate
.
Sourcepub fn save_caller(self) -> Result<()>
pub fn save_caller(self) -> Result<()>
Corresponds to seL4_CNode_SaveCaller
.
Trait Implementations§
Source§impl<C: Clone> Clone for AbsoluteCPtr<C>
impl<C: Clone> Clone for AbsoluteCPtr<C>
Source§fn clone(&self) -> AbsoluteCPtr<C>
fn clone(&self) -> AbsoluteCPtr<C>
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<C: Debug> Debug for AbsoluteCPtr<C>
impl<C: Debug> Debug for AbsoluteCPtr<C>
Source§impl<C: PartialEq> PartialEq for AbsoluteCPtr<C>
impl<C: PartialEq> PartialEq for AbsoluteCPtr<C>
impl<C: Copy> Copy for AbsoluteCPtr<C>
impl<C: Eq> Eq for AbsoluteCPtr<C>
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 Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)