#macro #ioctl #numbers #systems #unix #generate #io

ioctl-macros

Rust 宏,可用于在 Unix 系统上生成 ioctl 数字

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2016年6月26日

#ioctl 中排名 #28

MIT/Apache

4KB
65 行代码(不含注释)

ioctl-macros-rs

ioctl-macros-rs 是 Rust 宏,可用于在 Unix 系统上生成 ioctl 数字。这个包使用你的目标系统的头文件来自动查找 _IO_IOR_IOW,和 _IOWR C 定义,并为它们创建 Rust 绑定。结果是极小的包,适用于支持上述 C 宏的任何系统。它已在 Linux、OpenBSD、FreeBSD 和 NetBSD 上进行了测试。请随意报告任何问题。

用法

该包提供了四个宏:io!ior!iow!,和 iowr!。它们的使用方式与上述 C 宏相同。

第一个参数是标识字母。对于 Linux,您可以在官方 kernel.org 网站上找到列表 这里。第二个参数是序列号。不幸的是,它们没有很好地记录,因此您可能需要深入研究一些系统头文件来找到它们。第三个参数(在读取/写入宏的情况下)是您将传递给 ioctl 函数的数据类型。

// This definition is found in <linux/joystick.h> as:
// #define JSIOCGVERSION _IOR('j', 0x01, __u32)
let JSIOCGVERSION = ior!('j', 0x01, u32)

// This definition is found in <libdrm/drm.h> as:
// #define DRM_IOCTL_SET_MASTER _IO('d', 0x1e)
let DRM_IOCTL_SET_MASTER = io!('d', 0x1e)

无运行时依赖

~12KB