2

我尝试/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);

这里粗略地采取

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

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

4

2 回答 2

2

我认为这样做的方法是:

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

于 2013-05-27T22:19:58.313 回答
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() 的支持。

于 2013-05-24T19:31:30.537 回答