Struct twizzler_object::ptr::InvPtr

source ·
#[repr(transparent)]
pub struct InvPtr<T> { /* private fields */ }
Expand description

The raw invariant pointer, containing just a 64-bit packed FOT entry and offset.

Implementations§

source§

impl<Target> InvPtr<Target>

source

pub unsafe fn parts_unguarded(&self) -> (usize, u64)

Read the invariant pointer into its raw parts.

Safety

See this crate’s base documentation (Isolation Safety).

source

pub fn parts(&mut self) -> (usize, u64)

Read the invariant pointer into its raw parts.

source

pub fn from_parts(fote: usize, off: u64) -> Self

Construct an InvPtr from an FOT entry and an offset.

source

pub unsafe fn is_null_unguarded(&self) -> bool

Check if an invariant pointer is null.

Safety

See this crate’s base documentation (Isolation Safety).

source

pub fn is_null(&mut self) -> bool

Check if an invariant pointer is null.

source

pub fn null() -> Self

Construct a null raw pointer.

source

pub unsafe fn raw_inner(&mut self) -> *mut u64

Get a reference to the inner raw 64 bits of the invariant pointer.

Safety

See this crate’s base documentation (Isolation Safety). Additionally, the caller is expected to maintain the correct semantics of invariant pointers.

Trait Implementations§

source§

impl<T> !Unpin for InvPtr<T>

Auto Trait Implementations§

§

impl<T> ObjSafe for InvPtr<T>where T: ObjSafe,

§

impl<T> RefUnwindSafe for InvPtr<T>where T: RefUnwindSafe,

§

impl<T> Send for InvPtr<T>where T: Send,

§

impl<T> Sync for InvPtr<T>where T: Sync,

§

impl<T> UnwindSafe for InvPtr<T>where T: UnwindSafe,

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