nvme-cli-sys 0.1.5

Rust FFI bindings to the nvme-cli C library.
Documentation
use super::*;
use nix::{ioctl_read, ioctl_readwrite, ioctl_write_ptr};

#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_info_tgt {
    pub version: [::std::os::raw::c_uint; 3usize],
    pub reserved: ::std::os::raw::c_uint,
    pub tgtname: [::std::os::raw::c_char; 48usize],
}

#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_info {
    pub version: [::std::os::raw::c_uint; 3usize],
    pub tgtsize: ::std::os::raw::c_ushort,
    pub reserved16: ::std::os::raw::c_ushort,
    pub reserved: [::std::os::raw::c_uint; 12usize],
    pub tgts: [nvm_ioctl_info_tgt; 63usize],
}

#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_device_info {
    pub devname: [::std::os::raw::c_char; 32usize],
    pub bmname: [::std::os::raw::c_char; 48usize],
    pub bmversion: [::std::os::raw::c_uint; 3usize],
    pub flags: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uint; 8usize],
}

#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_get_devices {
    pub nr_devices: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uint; 31usize],
    pub info: [nvm_ioctl_device_info; 31usize],
}

#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_create_simple {
    pub lun_begin: ::std::os::raw::c_uint,
    pub lun_end: ::std::os::raw::c_uint,
}

#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_create_extended {
    pub lun_begin: ::std::os::raw::c_ushort,
    pub lun_end: ::std::os::raw::c_ushort,
    pub over_prov: ::std::os::raw::c_ushort,
    pub rsv: ::std::os::raw::c_ushort,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct nvm_ioctl_create_conf {
    pub type_: ::std::os::raw::c_uint,
    pub nvm_ioctl_create_conf_union: nvm_ioctl_create_conf_union,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union nvm_ioctl_create_conf_union {
    pub s: nvm_ioctl_create_simple,
    pub e: nvm_ioctl_create_extended,
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct nvm_ioctl_create {
    pub dev: [::std::os::raw::c_char; 32usize],
    pub tgttype: [::std::os::raw::c_char; 48usize],
    pub tgtname: [::std::os::raw::c_char; 32usize],
    pub flags: ::std::os::raw::c_uint,
    pub conf: nvm_ioctl_create_conf,
}

#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_remove {
    pub tgtname: [::std::os::raw::c_char; 32usize],
    pub flags: ::std::os::raw::c_uint,
}

#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_dev_init {
    pub dev: [::std::os::raw::c_char; 32usize],
    pub mmtype: [::std::os::raw::c_char; 8usize],
    pub flags: ::std::os::raw::c_uint,
}

#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
pub struct nvm_ioctl_dev_factory {
    pub dev: [::std::os::raw::c_char; 32usize],
    pub flags: ::std::os::raw::c_uint,
}

ioctl_readwrite!(nvm_info, b'L', NVM_INFO_CMD, nvm_ioctl_info);
ioctl_read!(
    nvm_get_devices,
    b'L',
    NVM_GET_DEVICES_CMD,
    nvm_ioctl_get_devices
);
ioctl_write_ptr!(nvm_dev_create, b'L', NVM_DEV_CREATE_CMD, nvm_ioctl_create);
ioctl_write_ptr!(nvm_dev_remove, b'L', NVM_DEV_REMOVE_CMD, nvm_ioctl_remove);
ioctl_write_ptr!(nvm_dev_init, b'L', NVM_DEV_INIT_CMD, nvm_ioctl_dev_init);
ioctl_write_ptr!(
    nvm_dev_factory,
    b'L',
    NVM_DEV_FACTORY_CMD,
    nvm_ioctl_dev_factory
);