test_smi_rs/
device_file.rs1use crate::generated::binding::*;
2use crate::util::c_char_slice_to_string;
3
4pub(crate) fn new_device_file(raw: FuriosaSmiDeviceFile) -> DeviceFile {
5 DeviceFile { raw }
6}
7
8pub struct DeviceFile {
10 raw: FuriosaSmiDeviceFile,
11}
12
13impl DeviceFile {
14 pub fn cores(&self) -> Vec<u32> {
16 (self.raw.core_start..=self.raw.core_end).collect()
17 }
18
19 pub fn path(&self) -> String {
21 c_char_slice_to_string(&self.raw.path)
22 }
23}
24
25pub(crate) fn default_device_file() -> FuriosaSmiDeviceFile {
26 FuriosaSmiDeviceFile {
27 core_start: 0,
28 core_end: 0,
29 path: [0; FURIOSA_SMI_MAX_PATH_SIZE as usize],
30 }
31}
32
33pub(crate) fn default_device_files() -> FuriosaSmiDeviceFiles {
34 FuriosaSmiDeviceFiles {
35 count: 0,
36 device_files: [default_device_file(); FURIOSA_SMI_MAX_DEVICE_HANDLE_SIZE as usize],
37 }
38}