use crate::{
runtime::context::{runtime_task_system, validate_task_context},
thread::TaskError,
};
pub use crate::{
sched::{
affinity::ThreadAffinityChange,
algorithm::SchedulerTimestamp,
policy::{DeadlineFlags, DeadlinePolicy, FairMode, Nice, RtPriority, SchedulePolicy},
},
thread::spec::CpuSet,
};
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct CpuId(u32);
impl CpuId {
pub const fn new(value: u32) -> Self {
Self(value)
}
pub const fn as_u32(self) -> u32 {
self.0
}
pub const fn as_usize(self) -> usize {
self.0 as usize
}
}
pub fn cpu_busy_runtime_ns(cpu: CpuId) -> Result<u64, TaskError> {
runtime_task_system()?.cpu_busy_runtime_ns(cpu)
}
pub fn cpu_topology_len() -> Result<usize, TaskError> {
Ok(runtime_task_system()?.cpu_topology_len())
}
pub fn active_cpu_set() -> Result<CpuSet, TaskError> {
validate_task_context()?;
Ok(runtime_task_system()?.active_cpu_set())
}
pub(crate) mod algorithm;
pub(crate) mod system;
pub(crate) mod policy;
pub(crate) mod affinity;
pub use crate::sched::system::{
ChargeOutcome, DeadlineActivity, DeadlineActivitySnapshot, DeadlineBandwidthSnapshot,
DeadlineRuntimeSnapshot, SchedulingClass,
};