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);