驱动编程初学者经常会遇到资料与实际环境不匹的情况:
error: unknown field 'ioctl' specified in initializer
原因:
由于2.6.36内核之后,去掉了原来的ioctl,添加两个新的成员,所以会出错,我的内核版本是:4.2.0-27-generic
解决方法:
新成员:
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
修改源文件中file_operations内.ioctl 改为 .compat_ioctl 即可。