在编写驱动程序时,make编译出现:unknown field ‘ioctl’ specified in initializer 的报错
这个报错的原因是在 linux-kernel-2.6.36 中将 file_operations 中的 ioctl 函数指针改为了 unlocked_ioctl 和 compat_ioctl。
file_operations 在路径:linux-kernel/include/linux/fs.h 下。
原版本:int (*ioctl)(struct inode*, struct file*, unsigned int, unsigned long);
新版本:
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
所以,要这么写。
static struct file_operations hello_flops = {