【问题标题】:Create ProcFS entry in /proc/net在 /proc/net 中创建 ProcFS 条目
【发布时间】:2013-05-28 06:19:58
【问题描述】:

我尝试从内核模块在/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。)

【问题讨论】:

    标签: linux-kernel kernel-module procfs


    【解决方案1】:

    在最近的内核中,您不会再找到 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() 的支持。

    【讨论】:

    • 切换到proc_create 意味着重构是不值得的,这就是为什么我说我需要create_proc_entry。无论如何,谢谢。
    【解决方案2】:

    我认为这样做的方法是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 2013-04-28
      • 1970-01-01
      • 2015-08-05
      • 2015-07-02
      • 1970-01-01
      相关资源
      最近更新 更多