nvme-cli-sys 0.1.0

Rust FFI bindings to the nvme-cli C library.
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);