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