ioctl 代码通常在 .c 或 .h 文件中定义为宏,即:
#define DRV_CTL_RESET _IO(DRV_MAGIC, 0x01)
#define DRV_CTL_DSP_TO _IO(DRV_MAGIC, 0x02)
以及Userspace程序中的用法是:
ioctl(drv_fd, DRV_CTL_DSP_TO, (unsigned long)tmo);
一切都很好,但是......
问题是:在内核和用户空间之间同步 ioctl 代码的良好做法是什么?
我目前的解决方案是从内核模块源自动生成API头文件,并将其包含在Userspace程序中。但我希望,也许有一种更方便的方式。
答案 0 :(得分:2)
将ioctl代码放在.h文件中,并从内核空间和用户空间使用相同的.h。有什么比这更方便? ;)