如何在/ proc/driver下创建proc条目?

6 kernel-module linux-kernel procfs

我想在/proc/driver目录下创建一个文件.我想使用宏proc_root_driver(或其他提供的)而不是明确使用"driver/MODULE_NAME".我用create_proc_entry:

struct proc_dir_entry *simpleproc_fops_entry;
simpleproc_fops_entry = create_proc_entry(MODULE_NAME, 0400, NULL /* proc_root_dir */);
Run Code Online (Sandbox Code Playgroud)

谷歌搜索后,我发现使用建议proc_root_driver,但当我使用它时,我得到错误

proc_root_driver在此函数中未声明

而且,proc_root_driver在linux/proc_fs.h中不可用.

我试图像这样声明结构:

struct proc_dir_entry proc_root;
struct proc_dir_entry *proc_root_driver = &proc_root;
Run Code Online (Sandbox Code Playgroud)

编译错误消失了,但文件没有出现在/proc/driver/proc.如何创建条目/proc

小智 4

查看 proc_fs.h,proc_root_driver 定义为:

extern struct proc_dir_entry *proc_root_driver;
Run Code Online (Sandbox Code Playgroud)

只要启用 CONFIG_PROC_FS 即可。如果您在配置内核时选择了 CONFIG_PROC_FS,您应该能够按照您自己的建议使用它,即:

#include <linux/proc_fs.h>
struct proc_dir_entry * procfile
procfile = create_proc_entry("myprocfile", 0400, proc_root_driver);
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请检查您是否设置了 CONFIG_PROC_FS。为了确保这一点,您可以使用 -E 选项编译源文件,并检查 create_proc_entry 调用是否包含非 NULL 参数作为最后一个参数。如果它是 NULL,或者根本不存在调用,则 CONFIG_PROC_FS 未启用。