⚠️ VeridianOS Kernel Documentation - This is low-level kernel code. All functions are unsafe unless explicitly marked otherwise. no_std

CapabilityModel

Struct CapabilityModel 

Source
pub struct CapabilityModel {
    pub token: u64,
    pub rights: u32,
    pub owner: u64,
    pub generation: u32,
    pub parent_token: u64,
    pub address_space: u64,
}
Expand description

Model of a capability token

Fields§

§token: u64

Unique token value

§rights: u32

Rights bitmask

§owner: u64

Owner process ID

§generation: u32

Generation counter (incremented on revocation)

§parent_token: u64

Parent token (0 = root capability)

§address_space: u64

Address space this capability belongs to

Implementations§

Source§

impl CapabilityModel

Source

pub fn encode(index: u32, rights: u32, generation: u32) -> u64

Encode capability fields into a single u64 token

Layout: [generation:16][rights:16][index:32]

Source

pub fn decode(token: u64) -> (u32, u32, u32)

Decode a token into (index, rights, generation)

Source

pub fn derive( &self, child_token: u64, child_rights: u32, child_owner: u64, ) -> Result<CapabilityModel, CapModelError>

Derive a child capability with a subset of rights

Source

pub fn has_rights(&self, required: u32) -> bool

Check if this capability has specific rights

Trait Implementations§

Source§

impl Clone for CapabilityModel

Source§

fn clone(&self) -> CapabilityModel

Returns a duplicate of the value. Read more
1.0.0§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for CapabilityModel

Source§

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

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

impl PartialEq for CapabilityModel

Source§

fn eq(&self, other: &CapabilityModel) -> 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 Copy for CapabilityModel

Source§

impl Eq for CapabilityModel

Source§

impl StructuralPartialEq for CapabilityModel

Auto Trait Implementations§

§

impl Freeze for CapabilityModel

§

impl RefUnwindSafe for CapabilityModel

§

impl Send for CapabilityModel

§

impl Sync for CapabilityModel

§

impl Unpin for CapabilityModel

§

impl UnwindSafe for CapabilityModel

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

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.