Skip to main content

SchedulerProfile

Enum SchedulerProfile 

Source
pub enum SchedulerProfile {
    Default,
    RealtimeFifo {
        priority: u8,
    },
    RealtimeRoundRobin {
        priority: u8,
    },
    Deadline {
        runtime_ns: u64,
        deadline_ns: u64,
        period_ns: u64,
    },
}
Expand description

Scheduler policy. Linux-specific (see sched(7)).

Variants§

§

Default

Linux SCHED_OTHER (CFS) — the default for all threads.

§

RealtimeFifo

Linux SCHED_FIFO — strictly priority-based, no quantum. priority is the value of sched_priority (1..=99, higher beats lower; 0 is not allowed for FIFO/RR with non-empty queues, is accepted by the kernel but treated as a SCHED_OTHER fallback).

Privileges: CAP_SYS_NICE from priority > 0 on; depending on RLIMIT_RTPRIO also for priority 0.

Fields

§priority: u8

Value of sched_priority (1..=99).

§

RealtimeRoundRobin

Linux SCHED_RR — like FIFO, but with a round-robin quantum per priority level.

Fields

§priority: u8

Value of sched_priority (1..=99).

§

Deadline

Linux SCHED_DEADLINE (CBS+EDF) — hard guarantees via a (runtime, deadline, period) triple in nanoseconds. See sched_setattr(2) for the spec. Conditions:

  • runtime <= deadline <= period
  • The kernel computes a bandwidth reservation. EBUSY if the global reservation blows the limit (default 95%).

Privileges: always CAP_SYS_NICE. Forks must not inherit (otherwise EBUSY).

Fields

§runtime_ns: u64

Worst-case execution time per period (ns).

§deadline_ns: u64

Soft deadline from the start of the period (ns).

§period_ns: u64

Repetition period (ns).

Implementations§

Source§

impl SchedulerProfile

Source

pub fn apply_to_current_thread(&self) -> Result<()>

Applies the profile to the calling thread.

§Errors
  • EPERM (PermissionDenied) if the privileges are missing.
  • EINVAL (InvalidInput) on inconsistent deadline values.
  • Unsupported on non-Linux targets.

Trait Implementations§

Source§

impl Clone for SchedulerProfile

Source§

fn clone(&self) -> SchedulerProfile

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for SchedulerProfile

Source§

impl Debug for SchedulerProfile

Source§

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

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

impl Eq for SchedulerProfile

Source§

impl PartialEq for SchedulerProfile

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 StructuralPartialEq for SchedulerProfile

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

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

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

Uses borrowed data to replace owned data, usually by cloning. Read more
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.