#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(u8)]
pub enum SchedulingClass {
Stop = 0,
Deadline = 1,
Realtime = 2,
Fair = 3,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct CpuLoadSummary {
pub(super) queued_count: usize,
pub(super) nr_running: usize,
pub(super) fair_demand: u64,
pub(super) workload_demand: u64,
pub(super) current_workload_demand: u64,
pub(super) fair_pushable: bool,
pub(super) fair_idle_only: bool,
pub(super) fair_delayed_count: usize,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct DeadlineBandwidthSnapshot {
pub(super) this_bw_scaled: u64,
pub(super) running_bw_scaled: u64,
pub(super) max_bw_scaled: u64,
}
impl DeadlineBandwidthSnapshot {
pub(crate) const fn new(
this_bw_scaled: u64,
running_bw_scaled: u64,
max_bw_scaled: u64,
) -> Self {
Self {
this_bw_scaled,
running_bw_scaled,
max_bw_scaled,
}
}
pub const fn this_bw_scaled(self) -> u64 {
self.this_bw_scaled
}
pub const fn running_bw_scaled(self) -> u64 {
self.running_bw_scaled
}
pub const fn inactive_bw_scaled(self) -> u64 {
assert!(self.running_bw_scaled <= self.this_bw_scaled);
self.this_bw_scaled - self.running_bw_scaled
}
pub const fn max_bw_scaled(self) -> u64 {
self.max_bw_scaled
}
}
impl CpuLoadSummary {
pub const fn queued_count(self) -> usize {
self.queued_count
}
pub const fn nr_running(self) -> usize {
self.nr_running
}
pub const fn fair_demand(self) -> u64 {
self.fair_demand
}
pub const fn workload_demand(self) -> u64 {
self.workload_demand
}
pub const fn current_workload_demand(self) -> u64 {
self.current_workload_demand
}
pub const fn has_pushable_fair(self) -> bool {
self.fair_pushable
}
pub const fn fair_idle_only(self) -> bool {
self.fair_idle_only
}
pub const fn fair_delayed_count(self) -> usize {
self.fair_delayed_count
}
}
pub(super) const SUMMARY_FAIR_PUSHABLE: u16 = 1 << 0;
pub(super) const SUMMARY_FAIR_IDLE_ONLY: u16 = 1 << 1;