#![allow(non_upper_case_globals)]
use std::fmt::{self, Display, Formatter};
use crate::core_status::CoreStatus::{Available, Occupied};
use crate::generated::binding::*;
#[derive(Debug)]
pub enum CoreStatus {
Available = FuriosaSmiCoreStatus_FURIOSA_SMI_CORE_STATUS_AVAILABLE as isize,
Occupied = FuriosaSmiCoreStatus_FURIOSA_SMI_CORE_STATUS_OCCUPIED as isize,
}
impl CoreStatus {
pub(crate) fn from(raw: FuriosaSmiCoreStatus) -> CoreStatus {
match raw {
FuriosaSmiCoreStatus_FURIOSA_SMI_CORE_STATUS_AVAILABLE => Available,
FuriosaSmiCoreStatus_FURIOSA_SMI_CORE_STATUS_OCCUPIED => Occupied,
_ => panic!("unknown core status"),
}
}
}
impl Display for CoreStatus {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
match self {
CoreStatus::Available => write!(f, "available"),
CoreStatus::Occupied => write!(f, "occupied"),
}
}
}
pub(crate) fn default_core_status() -> FuriosaSmiCoreStatuses {
FuriosaSmiCoreStatuses {
count: 0,
core_status: [0; FURIOSA_SMI_MAX_CORE_STATUS_SIZE as usize],
}
}