我想使用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,
};
知道为什么会这样。
感谢
答案 0 :(得分:23)
在较新的内核中,首选方法是使用.unlocked_ioctl
或.compat_ioctl
字段。普通.ioctl
已从struct file_operations
中移除。 This discussion可以澄清发生了什么以及如何处理。
答案 1 :(得分:4)
在较新的内核中,请在.unlocked_ioctl
的位置使用.ioctl
。它工作正常。