use crate::generated::binding::*;
use crate::util::c_char_slice_to_string;
pub(crate) fn new_device_file(raw: FuriosaSmiDeviceFile) -> DeviceFile {
DeviceFile { raw }
}
pub struct DeviceFile {
raw: FuriosaSmiDeviceFile,
}
impl DeviceFile {
pub fn cores(&self) -> Vec<u32> {
(self.raw.core_start..=self.raw.core_end).collect()
}
pub fn path(&self) -> String {
c_char_slice_to_string(&self.raw.path)
}
}
pub(crate) fn default_device_file() -> FuriosaSmiDeviceFile {
FuriosaSmiDeviceFile {
core_start: 0,
core_end: 0,
path: [0; FURIOSA_SMI_MAX_PATH_SIZE as usize],
}
}
pub(crate) fn default_device_files() -> FuriosaSmiDeviceFiles {
FuriosaSmiDeviceFiles {
count: 0,
device_files: [default_device_file(); FURIOSA_SMI_MAX_DEVICE_HANDLE_SIZE as usize],
}
}