2010-05-08 175 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

相关问题