2 releases
Uses old Rust 2015
0.1.1 | Jan 7, 2017 |
---|---|
0.1.0 | Jan 7, 2017 |
#2311 in Rust patterns
691 downloads per month
Used in 4 crates
(3 directly)
5KB
64 lines
#6 ioctl-gen
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
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);