Expand description
Provides constant functions to compute for ioctl(2) identifiers.
Currently, this supports Linux and macOS. The long term goal is to support ioctl identifiers for other BSD
variants.
§Usage Notes
IoctlId is an alias for the type to pass into the ioctl(2) request. This is either a u32 or u64, depending
on the target OS and architecture.
The io(), ior(), iow(), and iowr() functions take a type parameter, similar to the _IO(),
_IOR(), _IOW(), and _IOWR() macros.
For example, the following C code:
struct my_ioctl_data {
unsigned int a;
};
#define MY_IOCTL _IOR(0x12, 0x34, struct my_ioctl_data)Would be written in Rust as:
use ioctl_id::*;
#[repr(C)]
struct MyIoctlData {
a: u32,
}
const MY_IOCTL: IoctlId = ior::<MyIoctlData>(0x12, 0x34);Constants§
- IOCPARM_
MASK - A mask for the size of a parameter to the
ioctl(2)call. - IOCPARM_
MAX - Maximum size of
ioctl(2)arguments. - IOC_
DIRMASK - Mask for the direction values.
- IOC_IN
- The
ioctl(2)request sends parameters to the kernel. - IOC_
INOUT - The
ioctl(2)request sends and receives parameters to and from the kernel. - IOC_OUT
- The
ioctl(2)request receives parameters from the kernel. - IOC_
VOID - The
ioctl(2)request takes no parameters.
Functions§
- io
- Create an
ioctl(2)identifier for a call that passes no data. - ioc
- Create an
ioctl(2)identifier from a direction value, group identifier, call identifier, and size value. - iocbase_
cmd - Reference:
sys/ioccom.h - iocparm_
len - The size of the parameter to the
ioctl(2)call from its identifier. - ior
- Create an
ioctl(2)identifier for a call that reads data. - iow
- Create an
ioctl(2)identifier for a call that writes data. - iowr
- Create an
ioctl(2)identifier for a call that reads and writes data.
Type Aliases§
- IoctlId
- The identifier type for ioctl calls.