#ioctl #identifier #linux #devices #unix #call #header

ioctl-id

Rust对Unix系统上ioctl(2)调用的标识符

2个不稳定版本

0.2.0 2024年6月24日
0.1.0 2024年6月24日

#460 in Unix API

Apache-2.0

40KB
334

ioctl-id

Rust对Unix系统上ioctl(2)调用的标识符。

这将从ioctl.h头文件中将定义导入到Rust,作为常量函数,用于编写其他基于Rust的库,以与字符和块设备交互。

平台支持

操作系统 支持的平台 未测试的平台
FreeBSD (进行中)
Linux arm*, aarch64, i686, x86_64 mips*, ppc*, sparc*
MacOS arm64, x86_64

lib.rs:

提供用于计算ioctl(2)标识符的常量函数。

目前,这支持Linux和MacOS。长期目标是支持其他BSD变种的ioctl标识符。

使用说明

IoctlId是传递给ioctl(2)请求的类型别名的别名。这可以是u32u64,具体取决于目标操作系统和架构。

函数 [io()], [ior()], [iow()], 和 [iowr()] 使用类型参数,类似于宏 _IO(), _IOR(), _IOW(), 和 _IOWR()

例如,以下C代码

struct my_ioctl_data {
    unsigned int a;
};

#define MY_IOCTL _IOR(0x12, 0x34, struct my_ioctl_data)

用Rust编写将是

use ioctl_id::*;

#[repr(C)]
struct MyIoctlData {
   a: u32,
}

const MY_IOCTL: IoctlId = ior::<MyIoctlData>(0x12, 0x34);

没有运行时依赖