Crate ioctl_gen [] [src]

This crate lets you encode and decode ioctl numbers. It's pretty much just a port of ioctl.h.

Here are some examples:

#[macro_use]
extern crate ioctlify;

// Taken from <linux/videodev2.h>
const VIDIOC_RESERVED:   u32 = io!(b'V', 1);
const VIDIOC_STREAMON:   u32 = iow!(b'V', 18, 4);
const VIDIOC_LOG_STATUS: u32 = io!(b'V', 70);

assert_eq!(ioc_type!(VIDIOC_RESERVED), b'V' as u32);
assert_eq!(VIDIOC_STREAMON, 1074026002);
assert_eq!(ioc_nr!(VIDIOC_LOG_STATUS), 70);

Macros

io

Creates the ioctl number for an operation that isn't reading or writing.

ioc

Creates the ioctl number for the given data.

ioc_dir

Decodes the access mode / direction from an ioctl number.

ioc_nr

Decodes the function number from an ioctl number.

ioc_size

Decodes the parameter size from an ioctl number.

ioc_type

Decodes the type from an ioctl number.

ior

Creates the ioctl number for a read-only operation.

iow

Creates the ioctl number for a write-only operation.

iowr

Creates the ioctl number for a read/write operation.

Constants

DIRBITS

The number of bits used for the direction field.

DIRMASK

Bitmask for the direction field.

DIRSHIFT

Offset of the direction field.

NONE

Neither direction.

NRBITS

The number of bits used for the number field.

NRMASK

Bitmask for the number field.

NRSHIFT

Offset of the number field.

READ

The read direction.

SIZEBITS

The number of bits used for the size field.

SIZEMASK

Bitmask for the size field.

SIZESHIFT

Offset of the size field.

TYPEBITS

The number of bits used for the type field.

TYPEMASK

Bitmask for the type field.

TYPESHIFT

Offset of the type field.

WRITE

The write direction.