Crate ioctl_id

Crate ioctl_id 

Source
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.