Skip to main content

nvme_cli_sys/
nvme_ioctl.rs

1use nix::{ioctl_none, ioctl_readwrite};
2
3pub type nvme_admin_cmd = nvme_passthru_cmd;
4
5#[repr(C)]
6#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
7pub struct nvme_passthru_cmd {
8    pub opcode: ::std::os::raw::c_uchar,
9    pub flags: ::std::os::raw::c_uchar,
10    pub rsvd1: ::std::os::raw::c_ushort,
11    pub nsid: ::std::os::raw::c_uint,
12    pub cdw2: ::std::os::raw::c_uint,
13    pub cdw3: ::std::os::raw::c_uint,
14    pub metadata: ::std::os::raw::c_ulonglong,
15    pub addr: ::std::os::raw::c_ulonglong,
16    pub metadata_len: ::std::os::raw::c_uint,
17    pub data_len: ::std::os::raw::c_uint,
18    pub cdw10: ::std::os::raw::c_uint,
19    pub cdw11: ::std::os::raw::c_uint,
20    pub cdw12: ::std::os::raw::c_uint,
21    pub cdw13: ::std::os::raw::c_uint,
22    pub cdw14: ::std::os::raw::c_uint,
23    pub cdw15: ::std::os::raw::c_uint,
24    pub timeout_ms: ::std::os::raw::c_uint,
25    pub result: ::std::os::raw::c_uint,
26}
27
28#[repr(C)]
29#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
30pub struct nvme_passthru_cmd64 {
31    pub opcode: ::std::os::raw::c_uchar,
32    pub flags: ::std::os::raw::c_uchar,
33    pub rsvd1: ::std::os::raw::c_ushort,
34    pub nsid: ::std::os::raw::c_uint,
35    pub cdw2: ::std::os::raw::c_uint,
36    pub cdw3: ::std::os::raw::c_uint,
37    pub metadata: ::std::os::raw::c_ulonglong,
38    pub addr: ::std::os::raw::c_ulonglong,
39    pub metadata_len: ::std::os::raw::c_uint,
40    pub data_len: ::std::os::raw::c_uint,
41    pub cdw10: ::std::os::raw::c_uint,
42    pub cdw11: ::std::os::raw::c_uint,
43    pub cdw12: ::std::os::raw::c_uint,
44    pub cdw13: ::std::os::raw::c_uint,
45    pub cdw14: ::std::os::raw::c_uint,
46    pub cdw15: ::std::os::raw::c_uint,
47    pub timeout_ms: ::std::os::raw::c_uint,
48    pub rsvd2: ::std::os::raw::c_uint,
49    pub result: ::std::os::raw::c_uint,
50}
51
52ioctl_none!(nvme_ioctl_id, b'N', 0x40);
53ioctl_readwrite!(nvme_ioctl_admin_cmd, b'N', 0x41, nvme_admin_cmd);
54ioctl_readwrite!(nvme_ioctl_io_cmd, b'N', 0x43, nvme_passthru_cmd);
55ioctl_none!(nvme_ioctl_reset, b'N', 0x44);
56ioctl_none!(nvme_ioctl_subsys_reset, b'N', 0x45);
57ioctl_none!(nvme_ioctl_rescan, b'N', 0x46);
58ioctl_readwrite!(nvme_ioctl_admin64_cmd, b'N', 0x47, nvme_passthru_cmd64);
59ioctl_readwrite!(nvme_ioctl_io64_cmd, b'N', 0x48, nvme_passthru_cmd64);