error unknown field 'ioctl' specified in initializer
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
在linux-2.6.36核心上載入編譯驅動時,出現
error:unknown field 'ioctl' specified in initializer
原因是:在2.6.36核心上file_operations發生了重大的改變:
原先的
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);
因而在實際驅動中,我們需要將原先的寫的ioctl函式頭給改成下面的unlocked_ioctl,在file_operations結構體的填充中也是一樣。
error: unknown field 'ioctl' specified in initializer問題是由於2.6.36核心之後 去掉了原來的ioctl,新增兩個新的成員,所以會出錯
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
所以修改原始檔中file_operations內.ioctl 改為 .compat_ioctl 即可
OK,編譯通過,警告咱就忽略了
給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow
error: unknown field 'ioctl' specified in initializer問題是由於2.6.36核心之後 去掉了原來的ioctl,新增兩個新的成員,所以會出錯
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
所以修改原始檔中file_operations內.ioctl 改為 .compat_ioctl 即可
OK,編譯通過,警告咱就忽略了