nvme_cli_sys/
nvme_ioctl.rs1use 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);