inode_operations ,警告:从不兼容的指针类型进行初始化
我正在尝试编译一个简单的内核程序,该程序从 proc 文件读取和写入。
我试图通过覆盖 inode_operations struct (.permission)
static int module_permission(struct inode *inode, int op, struct nameidata *foo)
{ 中的权限 fp 来设置该文件的权限 。 。 。 }
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 */
知道如何解决这个问题吗?
谢谢!
I'm trying to compile a simple Kernel program that read and write from a proc file.
I'm trying to set permission to that file by overriding the permission fp in inode_operations struct (.permission)
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;
For some reason, when I compile this i get -> warning: initialization from incompatible pointer type on the following line:
.permission = module_permission, /* check for permissions */
Any idea how to solve this?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您使用什么内核版本?我在 2.6.33,这就是 inode_operations 的声明方式:
如果你的内核有相同的东西,那么你的 module_permission 函数的函数签名是 (struct inode *, int, struct nameidata *) 其中 .permission 期望 (struct inode *,整数)
What kernel version are you using ? I am on 2.6.33 and this is how inode_operations is declared :
If your kernel has the same thing, then the function signature of your module_permission function is (struct inode *, int, struct nameidata *) where as .permission expects (struct inode *, int)