#ioctl

ioctl-gen

Simple macros for generating ioctl numbers

2 releases

Uses old Rust 2015

0.1.1 Jan 7, 2017
0.1.0 Jan 7, 2017

#24 in #ioctl

Download history 84/week @ 2024-07-19 393/week @ 2024-07-26 104/week @ 2024-08-02 117/week @ 2024-08-09 103/week @ 2024-08-16 118/week @ 2024-08-23 177/week @ 2024-08-30 232/week @ 2024-09-06 120/week @ 2024-09-13 155/week @ 2024-09-20 151/week @ 2024-09-27 106/week @ 2024-10-04 92/week @ 2024-10-11 132/week @ 2024-10-18 130/week @ 2024-10-25 119/week @ 2024-11-01

489 downloads per month
Used in 4 crates (3 directly)

MIT license

5KB
64 lines

#6 ioctl-gen

Documentation

Making those magic ioctl numbers is really annoying without macros, so here are some macros. And if you were wondering, yes, they work in constants.

Example

#[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);

Installation

In Cargo.toml:

[dependencies]
ioctl-gen = "0.1.0"

License

The MIT license.


lib.rs:

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);

No runtime deps