隐式声明函数'create_proc_entry'

18

我试图使用create_proc_entry()函数在/proc目录下创建一个目录。当我尝试编译代码时,出现以下错误:implicit declaration of function 'create_proc_entry'。

这是我在.c文件中包含的头文件:

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/vmalloc.h>
#include <linux/uaccess.h>

我要编译的机器的内核版本是:3.10.33-g7954807-dirty

我是否缺少调用此方法所需的任何标头?或者该方法在我的内核版本中已不推荐使用?

1个回答

24

/proc文件系统在3.10版本中进行了重构,您正在寻找的函数已被删除,应该使用功能完整的proc_create函数族。请注意,它们的签名是不同的。

3.10版本: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.10

3.9版本: http://lxr.free-electrons.com/source/include/linux/proc_fs.h?v=3.9

您可以在《Linux设备驱动程序4》一书中找到更详细的使用完整/proc函数的说明,或者,如果您想要更简短的解决方案,请查看此链接 (https://github.com/jesstess/ldd4/blob/master/scull/main.c),您可以看到如何使用 struct file_operations 。您不必设置结构的所有字段。


我看到需要创建一个struct file_operations才能使用proc_create。如何命名创建.write成员的回调函数? - theNoobProgrammer
@theNoobProgrammer 我已经编辑了答案,希望能有所帮助。 - Felipe Lavratti
1
这个链接中的方法似乎对我的目的来说有些过度了。我基本上是在尝试做这个:http://www.ibm.com/developerworks/linux/library/l-proc/index.html 。我能够从我的主机上运行这个程序。一旦挂载,创建的目录(/proc/fortune)可以被写入和读取。但是在我正在开发的设备上,它没有包含create_proc_entry(),而是有proc_create()。我只是想改变链接中的读/写回调以使用file_operation结构。我认为我不需要完全进行顺序文件读取。 - theNoobProgrammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接