kernel::process

Enum ShortId

Source
pub enum ShortId {
    LocallyUnique,
    Fixed(NonZeroU32),
}
Expand description

A compressed form of an Application Identifier.

ShortIds are useful for more efficient operations with app identifiers within the kernel. They are guaranteed to be unique among all running processes on the same board. However, as they are only 32 bits they are not globally unique.

ShortIds are persistent across restarts of the same app (whereas ProcessIDs are not).

As ShortIds must be unique for each app on a board, and since not every platform may have a use for ShortIds, the definition of a ShortId provides a convenient mechanism for meeting the uniqueness requirement without actually requiring assigning unique discrete values to each app. This is done with the LocallyUnique variant which is an abstract ID that is guaranteed to be unique (i.e. an equality comparison with any other ShortId will always return false). Platforms which have a use for an actual number for a ShortId should use the Fixed(NonZeroU32) variant. Note, for type space efficiency, we disallow using the number 0 as a fixed ShortId.

ShortIds are assigned to the app as part of the credential checking process. Specifically, an implementation of the process_checker::Compress trait assigns ShortIds.

Variants§

§

LocallyUnique

An abstract ShortId that is always guaranteed to be unique. As this is not an actual discrete value, it cannot be used for anything other than meeting the uniqueness requirement.

§

Fixed(NonZeroU32)

A 32 bit number ShortId. This fixed value is guaranteed to be unique among all running processes as the kernel will not start two processes with the same ShortId.

Trait Implementations§

Source§

impl Clone for ShortId

Source§

fn clone(&self) -> ShortId

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Display for ShortId

Source§

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

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

impl From<Option<NonZero<u32>>> for ShortId

Source§

fn from(id: Option<NonZeroU32>) -> ShortId

Converts to this type from the input type.
Source§

impl PartialEq for ShortId

Source§

fn eq(&self, other: &Self) -> bool

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

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 ShortId

Source§

impl Eq for ShortId

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

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

Source§

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

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

Source§

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

Source§

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.