inode_operations,警告:从不兼容的指针类型初始化
问题描述:
我想编译一个简单的内核程序,读取和写入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.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)
Linux操作系统Ubuntu 2.6.28-18-通用#59,Ubuntu的SMP 你说得对,我一直在寻找在错误的文件系统标头(fs.h文件) int(* permission)(struct inode *,int); 非常感谢! – djTeller 2010-05-09 13:17:14