Skip to main content

nvme_cli_sys/
lightnvm.rs

1use nix::{ioctl_read, ioctl_readwrite, ioctl_write_ptr};
2
3use super::*;
4
5#[repr(C)]
6#[derive(Debug, Copy, Clone, PartialEq, Eq)]
7pub struct nvm_ioctl_info_tgt {
8    pub version: [::std::os::raw::c_uint; 3usize],
9    pub reserved: ::std::os::raw::c_uint,
10    pub tgtname: [::std::os::raw::c_char; 48usize],
11}
12
13#[repr(C)]
14#[derive(Debug, Copy, Clone, PartialEq, Eq)]
15pub struct nvm_ioctl_info {
16    pub version: [::std::os::raw::c_uint; 3usize],
17    pub tgtsize: ::std::os::raw::c_ushort,
18    pub reserved16: ::std::os::raw::c_ushort,
19    pub reserved: [::std::os::raw::c_uint; 12usize],
20    pub tgts: [nvm_ioctl_info_tgt; 63usize],
21}
22
23#[repr(C)]
24#[derive(Debug, Copy, Clone, PartialEq, Eq)]
25pub struct nvm_ioctl_device_info {
26    pub devname: [::std::os::raw::c_char; 32usize],
27    pub bmname: [::std::os::raw::c_char; 48usize],
28    pub bmversion: [::std::os::raw::c_uint; 3usize],
29    pub flags: ::std::os::raw::c_uint,
30    pub reserved: [::std::os::raw::c_uint; 8usize],
31}
32
33#[repr(C)]
34#[derive(Debug, Copy, Clone, PartialEq, Eq)]
35pub struct nvm_ioctl_get_devices {
36    pub nr_devices: ::std::os::raw::c_uint,
37    pub reserved: [::std::os::raw::c_uint; 31usize],
38    pub info: [nvm_ioctl_device_info; 31usize],
39}
40
41#[repr(C)]
42#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
43pub struct nvm_ioctl_create_simple {
44    pub lun_begin: ::std::os::raw::c_uint,
45    pub lun_end: ::std::os::raw::c_uint,
46}
47
48#[repr(C)]
49#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
50pub struct nvm_ioctl_create_extended {
51    pub lun_begin: ::std::os::raw::c_ushort,
52    pub lun_end: ::std::os::raw::c_ushort,
53    pub over_prov: ::std::os::raw::c_ushort,
54    pub rsv: ::std::os::raw::c_ushort,
55}
56
57#[repr(C)]
58#[derive(Copy, Clone)]
59pub struct nvm_ioctl_create_conf {
60    pub type_: ::std::os::raw::c_uint,
61    pub nvm_ioctl_create_conf_union: nvm_ioctl_create_conf_union,
62}
63#[repr(C)]
64#[derive(Copy, Clone)]
65pub union nvm_ioctl_create_conf_union {
66    pub s: nvm_ioctl_create_simple,
67    pub e: nvm_ioctl_create_extended,
68}
69
70#[repr(C)]
71#[derive(Copy, Clone)]
72pub struct nvm_ioctl_create {
73    pub dev: [::std::os::raw::c_char; 32usize],
74    pub tgttype: [::std::os::raw::c_char; 48usize],
75    pub tgtname: [::std::os::raw::c_char; 32usize],
76    pub flags: ::std::os::raw::c_uint,
77    pub conf: nvm_ioctl_create_conf,
78}
79
80#[repr(C)]
81#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
82pub struct nvm_ioctl_remove {
83    pub tgtname: [::std::os::raw::c_char; 32usize],
84    pub flags: ::std::os::raw::c_uint,
85}
86
87#[repr(C)]
88#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
89pub struct nvm_ioctl_dev_init {
90    pub dev: [::std::os::raw::c_char; 32usize],
91    pub mmtype: [::std::os::raw::c_char; 8usize],
92    pub flags: ::std::os::raw::c_uint,
93}
94
95#[repr(C)]
96#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
97pub struct nvm_ioctl_dev_factory {
98    pub dev: [::std::os::raw::c_char; 32usize],
99    pub flags: ::std::os::raw::c_uint,
100}
101
102ioctl_readwrite!(nvm_info, b'L', NVM_INFO_CMD, nvm_ioctl_info);
103ioctl_read!(
104    nvm_get_devices,
105    b'L',
106    NVM_GET_DEVICES_CMD,
107    nvm_ioctl_get_devices
108);
109ioctl_write_ptr!(nvm_dev_create, b'L', NVM_DEV_CREATE_CMD, nvm_ioctl_create);
110ioctl_write_ptr!(nvm_dev_remove, b'L', NVM_DEV_REMOVE_CMD, nvm_ioctl_remove);
111ioctl_write_ptr!(nvm_dev_init, b'L', NVM_DEV_INIT_CMD, nvm_ioctl_dev_init);
112ioctl_write_ptr!(
113    nvm_dev_factory,
114    b'L',
115    NVM_DEV_FACTORY_CMD,
116    nvm_ioctl_dev_factory
117);