nvme_cli_sys/
lightnvm.rs

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