在内核模式和用户模式之间使用ioctl通信

时间:2011-05-03 11:40:54

标签: ubuntu-10.04 kernel-module ioctl

我想使用ioctl与我的内核模块进行通信。我已经为内核模块编写了两个c程序,其他用于用户模式。编译内核模块时出现此错误:

错误:初始值设定项中指定的未知字段'ioctl'

在这一行:

struct file_operations Fops = {
 .read = device_read,
 .write = device_write,
 .ioctl = device_ioctl,  ------> at this point error is occuring.
 .open = device_open,
 .release = device_release,
};

知道为什么会这样。

感谢

2 个答案:

答案 0 :(得分:23)

在较新的内核中,首选方法是使用.unlocked_ioctl.compat_ioctl字段。普通.ioctl已从struct file_operations中移除。 This discussion可以澄清发生了什么以及如何处理。

答案 1 :(得分:4)

在较新的内核中,请在.unlocked_ioctl的位置使用.ioctl。它工作正常。