1

内核模块中的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 头文件,并将其包含在用户空间程序中。但我希望,也许有更方便的方法。

4

1 回答 1

2

只需将 ioctl 代码放在 .h 文件中,然后使用内核空间和用户空间中的相同 .h 即可。还有什么比这更方便的呢?;)

于 2013-01-31T13:53:53.983 回答