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 头文件,并将其包含在用户空间程序中。但我希望,也许有更方便的方法。
最佳答案
只需将 ioctl 代码放在一个 .h 文件中,并从内核空间和用户空间使用相同的 .h。还有什么比这更方便的呢? ;)
关于c - 将 ioctl 代码从内核模块传递到用户空间程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627032/