我在内核官方网站下载了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.具体的怎么修改才可以使内核编译成功,可以解释一下吗?
非常感谢! |