use nix::{ioctl_none, ioctl_readwrite};
pub type nvme_admin_cmd = nvme_passthru_cmd;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct nvme_passthru_cmd {
pub opcode: ::std::os::raw::c_uchar,
pub flags: ::std::os::raw::c_uchar,
pub rsvd1: ::std::os::raw::c_ushort,
pub nsid: ::std::os::raw::c_uint,
pub cdw2: ::std::os::raw::c_uint,
pub cdw3: ::std::os::raw::c_uint,
pub metadata: ::std::os::raw::c_ulonglong,
pub addr: ::std::os::raw::c_ulonglong,
pub metadata_len: ::std::os::raw::c_uint,
pub data_len: ::std::os::raw::c_uint,
pub cdw10: ::std::os::raw::c_uint,
pub cdw11: ::std::os::raw::c_uint,
pub cdw12: ::std::os::raw::c_uint,
pub cdw13: ::std::os::raw::c_uint,
pub cdw14: ::std::os::raw::c_uint,
pub cdw15: ::std::os::raw::c_uint,
pub timeout_ms: ::std::os::raw::c_uint,
pub result: ::std::os::raw::c_uint,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct nvme_passthru_cmd64 {
pub opcode: ::std::os::raw::c_uchar,
pub flags: ::std::os::raw::c_uchar,
pub rsvd1: ::std::os::raw::c_ushort,
pub nsid: ::std::os::raw::c_uint,
pub cdw2: ::std::os::raw::c_uint,
pub cdw3: ::std::os::raw::c_uint,
pub metadata: ::std::os::raw::c_ulonglong,
pub addr: ::std::os::raw::c_ulonglong,
pub metadata_len: ::std::os::raw::c_uint,
pub data_len: ::std::os::raw::c_uint,
pub cdw10: ::std::os::raw::c_uint,
pub cdw11: ::std::os::raw::c_uint,
pub cdw12: ::std::os::raw::c_uint,
pub cdw13: ::std::os::raw::c_uint,
pub cdw14: ::std::os::raw::c_uint,
pub cdw15: ::std::os::raw::c_uint,
pub timeout_ms: ::std::os::raw::c_uint,
pub rsvd2: ::std::os::raw::c_uint,
pub result: ::std::os::raw::c_uint,
}
ioctl_none!(nvme_ioctl_id, b'N', 0x40);
ioctl_readwrite!(nvme_ioctl_admin_cmd, b'N', 0x41, nvme_admin_cmd);
ioctl_readwrite!(nvme_ioctl_io_cmd, b'N', 0x43, nvme_passthru_cmd);
ioctl_none!(nvme_ioctl_reset, b'N', 0x44);
ioctl_none!(nvme_ioctl_subsys_reset, b'N', 0x45);
ioctl_none!(nvme_ioctl_rescan, b'N', 0x46);
ioctl_readwrite!(nvme_ioctl_admin64_cmd, b'N', 0x47, nvme_passthru_cmd64);
ioctl_readwrite!(nvme_ioctl_io64_cmd, b'N', 0x48, nvme_passthru_cmd64);