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