我正在尝试编译一个从proc文件读取和写入的简单内核程序。
我试图通过覆盖inode_operations struct(.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 */
知道如何解决这个问题吗?
谢谢!
答案 0 :(得分: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函数的函数签名是(struct inode *,int,struct nameidata *),其中.permission需要(struct inode *,int)