| 
 
贡献0 
飞刀0 FD
注册时间2016-5-6
在线时间0 小时积分0 
 
 扫一扫,手机访问本帖  | 
 
| 我在内核官方网站下载了linux2.6.36.4版本的内核,想移植触摸屏的驱动,经过不断的修改,最后出现了这样的问题: drivers/char/s3c_adc.c:157: error: unknown field 'ioctl' specified in initializer
 drivers/char/s3c_adc.c:157: warning: initialization from incompatible pointer type
 make[2]: *** [drivers/char/s3c_adc.o] 错误 1
 make[1]: *** [drivers/char] 错误 2
 make: *** [drivers] 错误 2
 
 [code]153     static struct file_operations s3c_adc_fops = {
 154                         .owner                = THIS_MODULE,
 155                        .read                = s3c_adc_read,
 156                        .open                = s3c_adc_open,
 157                        .ioctl          = s3c_adc_ioctl,
 158             };
 
 在网上查了相关的资料,解释为下:
 2.6.36的file_operations结构发生了重大变化。取消了原有的ioctl成员,添加来新的成员
 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
 1.我想,如果可以找到static struct file_operations定义的文件,就可以解决了。但是我对代码不是很熟,可以告诉我这个结构体定义的位置吗?
 2.具体的怎么修改才可以使内核编译成功,可以解释一下吗?
 
 非常感谢!
 | 
 |