2014-01-19 40 views
1

靜態常量結構體struct inode_operations msdos_dir_inode_operations = {「錯誤:未知字段‘compat_ioctl’初始值設定」,同時創造虛設的ioctl

.create  = msdos_create, 
.lookup  = msdos_lookup, 
.unlink  = msdos_unlink, 
.mkdir  = msdos_mkdir, 
.rmdir  = msdos_rmdir, 
.rename  = msdos_rename, 
.setattr = fat_setattr, 
.getattr = fat_getattr, 
.compat_ioctl = my_ioctl, ---->error 

};

我也試圖與unlocked_ioctl但相同出錯

[根@本地脂肪]#使

使-C /lib/modules/3.11.10-100.fc18.x86_64/build M = /home/aditya/linux-3.12.6/fs/fat模塊

化妝[1]:進入目錄`/usr/src/kernels/3.11.10-100.fc18.x86_64' CC [M]/home/aditya/linux-3.12.6/fs/fat/namei_msdos.o

/home/aditya/linux-3.12.6/fs/fat/namei_msdos.c:646:2:er ROR:未知字段「compat_ioctl」初始值設定

/home/aditya/linux-3.12.6/fs/fat/namei_msdos.c:646:2:警告:[默認啓用]從不相容的指針類型初始化 /home/aditya/linux-3.12.6/fs/fat/namei_msdos.c:646:2:警告:(接近'msdos_dir_inode_operations.setxattr'的初始化)[默認啓用] make [2]:* [/ home/aditya/linux-3.12.6/fs/fat/namei_msdos.o]錯誤1 make [1]:* [模塊 /home/aditya/linux-3.12.6/fs/fat]錯誤2 make [1]:離開目錄`/usr/src/kernels/3.11.10-100.fc18.x86_64' make:* [all]錯誤2

+1

據我所看到的,['結構inode_operations'](http://lxr.free-electrons.com/source/include/linux/fs.h?v= 3.12#L1557)在3.12中沒有'* _ioctl'字段。這些回調來自'struct file_operations',你打算使用它嗎? – Eugene

+0

是的,但我已經修改fs.h並添加了 int(* unlocked_ioctl)(struct file *,unsigned int,unsigned long); } in struct inode_operations ... 然後它也顯示相同的錯誤 – user3172621

+0

嘿請幫忙先前的評論 – user3172621

回答

1

由於某個原因,ioctl已被更改,如果您也在驅動程序中更改內核更改,則最好。您不能在另一個版本中使用編譯的驅動程序。 變化不是太難。

在FOPS結構變化

ioctlunlocked_ioctl

,並在驅動程序中的ioctl函數,不傳遞inode指針。就是這樣,剩下的代碼可以保持不變。

看到this tutorial更多細節

相關問題