c - 将 ioctl 代码从内核模块传递到用户空间程序

标签 c linux-kernel kernel ioctl

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/

相关文章:

c - 构建节点时内存分配失败

c - Linux内核函数和内核模块开发

linux - Ubuntu 14.04 - 内核无法使用 make-kpkg 编译

c - Linux 内核字符驱动程序写入调用未按预期工作

linux - 为什么这个内核模块在 2.6.39 上标记为永久

c++ - C/C++ 获取按键而不轮询

c - 编码(marshal)处理/解封处理与序列化/反序列化之间有什么区别?

c - qsort() 在一个方向上起作用,但在另一个方向上不起作用

c - 如何用 C 语言读取和编辑 .txt 文件?

linux - 检查是否可以从linux内核空间访问内存地址