logo
#[non_exhaustive]
pub enum MutexProtocol {
    None,
    Ceiling(usize),
}
Expand description

Specifies the locking protocol to be followed by a mutex.

This enum type is defined as #[non_exhaustive] to allow for potential future extensions. The function MutexProtocol::is_supported indicates whether a MutexProtocol is supported by the kernel. The behavior is implementation-defined (preferably approximating the request or falling back to a supported option) if a specified MutexProtocol is not supported.

Relation to Other Specifications: The operating systems and operating system specifications providing an interface for specifying a mutex protocol include (but are not limited to) the following: POSIX (pthread_mutexattr_setprotocol and PTHREAD_PRIO_PROTECT, etc.), RTEMS Classic API (RTEMS_PRIORITY_CEILING, etc.), and μITRON4.0 (TA_CEILING, etc.).

Rationale: When this enumerate type was added, the plan was to only support the priority ceiling protocol, so having a method CfgMutexBuilder::ceiling_priority taking a priority ceiling value would have been simpler. Nevertheless, it was decided to use this enumerate type to accomodate other protocols in the future and to allow specifying protocol-specific parameters.

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

None

Locking the mutex does not affect the priority of the owning task.

Ceiling(usize)

Locking the mutex raises the effective priority of the owning task to the mutex’s priority ceiling according to the immediate priority ceiling protocol. The inner value specifies the priority ceiling.

The value must be in range 0..num_task_priority_levels.

Implementations

Return a flag indicating whether the kernel supports this MutexProtocol.

It’s possible for this function to return false for all possible values of MutexProtocol if the kernel doesn’t precisely implement any possible options of MutexProtocol.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.