test_smi_rs/
device_file.rs

1use 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
8/// A struct for device file
9pub struct DeviceFile {
10    raw: FuriosaSmiDeviceFile,
11}
12
13impl DeviceFile {
14    /// Get a list of core for device file
15    pub fn cores(&self) -> Vec<u32> {
16        (self.raw.core_start..=self.raw.core_end).collect()
17    }
18
19    /// Get a device file path
20    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}