2010-05-08 178 views
0

我想編譯一個簡單的內核程序,讀取和寫入proc文件。inode_operations,警告:從不兼容的指針類型初始化

我試圖通過重寫inode_operations結構(.permission)許可FP到權限設置爲文件

static int module_permission(struct inode *inode, int op, struct nameidata *foo) 

{ 。 。 。 }

static struct inode_operations Inode_Ops_4_Our_Proc_File = { 
    .permission = module_permission,  /* check for permissions */ 

};

Our_Proc_File->proc_iops = &Inode_Ops_4_Our_Proc_File; 

出於某種原因,當我編譯這個我得到 - >警告:從兼容的指針類型初始化以下行:

 .permission = module_permission,  /* check for permissions */ 

不知道如何解決這個問題?

謝謝!

回答

2

你使用的是什麼內核版本?我在2.6.33這是inode_operations是如何宣稱:

struct inode_operations { 
    ... 
int (*permission) (struct inode *, int); 
    int (*check_acl)(struct inode *, int); 
int (*setattr) (struct dentry *, struct iattr *); 
    int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); 
    ... 
} 

如果你的內核有同樣的事情,那麼你module_permission函數的函數簽名(結構的inode *,INT,結構nameidata *),其中作爲.permission預計(結構的inode *,INT)

+0

Linux操作系統Ubuntu 2.6.28-18-通用#59,Ubuntu的SMP 你說得對,我一直在尋找在錯誤的文件系統標頭(fs.h文件) int(* permission)(struct inode *,int); 非常感謝! – djTeller 2010-05-09 13:17:14

相關問題