在/ proc / net中创建ProcFS条目

时间:2013-05-23 17:22:27

标签: linux-kernel kernel-module procfs

我尝试在内核模块中创建/proc/net内的条目,如下所示:

struct file *filp = filp_open("/proc/net", O_RDONLY, 0);
struct proc_dir_entry *parent = PDE(filp->f_dentry->d_inode);
filp_close(filp, NULL);

proc_file = create_proc_entry("test", 0644, parent);

粗略取自here

为什么会创建我的条目/proc/test而不是/proc/net/test

(注意:我也想使用create_proc_entry,而不是proc_create。)

2 个答案:

答案 0 :(得分:2)

在最近的内核中,您再也找不到create_proc_entry(),它已被完全删除。看看https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=80e928f7ebb958f4d79d4099d1c5c0a015a23b93。所以,你需要使用proc_create()。并且,传递 - > proc_net作为父目录条目。看看这个:https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/net/ipv4/proc.c#n479,这会给你一个明确的想法。

如果您没有使用最新的内核,那么您可能有create_proc_entry(),因此可能会考虑使用create_proc_entry(),而不是proc_create()。但是,如果你应对当前的方法,我认为这是最好的。因为你不能获得带有最新内核的create_proc_entry()的支持。

答案 1 :(得分:2)

我认为这样做的方法是:

proc_file = create_proc_entry(“test”,0644,init_net.proc_net);