sparreal-kernel 0.15.2

Sparreal OS kernel
Documentation
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(usize)]
pub enum CpuOnStatus {
    Ok = 0,
    NotSupported = 1,
    AlreadyOn = 2,
    InvalidParameters = 3,
    Other = 4,
}

impl CpuOnStatus {
    pub fn is_started(self) -> bool {
        matches!(self, Self::Ok | Self::AlreadyOn)
    }
}

impl From<usize> for CpuOnStatus {
    fn from(value: usize) -> Self {
        match value {
            0 => Self::Ok,
            1 => Self::NotSupported,
            2 => Self::AlreadyOn,
            3 => Self::InvalidParameters,
            _ => Self::Other,
        }
    }
}

pub fn cpu_count() -> usize {
    crate::hal::al::cpu::cpu_count()
}

pub fn current_cpu_id() -> usize {
    crate::hal::al::cpu::current_cpu_id()
}

pub fn cpu_on(cpu_idx: usize) -> CpuOnStatus {
    crate::hal::al::cpu::cpu_on(cpu_idx).into()
}