use core::ffi::{c_char, c_int, c_ulong};
const IOC_NRBITS: u32 = 8;
const IOC_NRMASK: u32 = (1 << IOC_NRBITS) - 1;
const IOC_TYPEBITS: u32 = 8;
const IOC_SIZEBITS: u32 = 14;
const IOC_NRSHIFT: u32 = 0;
const IOC_TYPESHIFT: u32 = IOC_NRSHIFT + IOC_NRBITS;
const IOC_SIZESHIFT: u32 = IOC_TYPESHIFT + IOC_TYPEBITS;
const IOC_SIZEMASK: u32 = (1 << IOC_SIZEBITS) - 1;
const DRM_COMMAND_BASE: u32 = 0x40;
const DRM_COMMAND_END: u32 = 0xA0;
#[repr(C)]
#[derive(Debug, Copy, Clone, Default)]
pub struct DrmVersion {
pub version_major: c_int,
pub version_minor: c_int,
pub version_patchlevel: c_int,
pub name_len: c_ulong,
pub name: *mut c_char,
pub date_len: c_ulong,
pub date: *mut c_char,
pub desc_len: c_ulong,
pub desc: *mut c_char,
}
pub fn ioctl_nr(cmd: u32) -> u32 {
(cmd) & IOC_NRMASK
}
pub fn is_driver_ioctl(nr: u32) -> bool {
(DRM_COMMAND_BASE..DRM_COMMAND_END).contains(&nr)
}
pub fn io_size(cmd: u32) -> u32 {
((cmd) >> (IOC_SIZESHIFT)) & IOC_SIZEMASK
}