如何避免在 /proc 中重复创建目录?

How to avoid double creating directories in /proc?

我正在编写一个 Linux 内核模块,我想创建一个子目录 /proc/foo/,然后在其中公开几个将在运行时生成的人工文件通过我的模块。我知道我可以使用 proc_mkdir 创建 foo 目录,但如果它已经存在,dmesg 将显示警告,我希望保持日志干净。

现在您可能会认为在模块拆卸时应该删除 /proc/foo/ 树,这样冗余的 mkdir 就永远不会发生。但是我正在研究一系列相关的内核模块,我想我应该让它们中的每一个单独公开 /proc/foo/ 中的文件。也许这是非典型的?我在 proc_fs.h 中没有看到任何用于查询现有文件的函数,所以也许我做错了?

另一种选择是拥有一个只创建目录的模块,并让它导出一个包含 proc_dir_entry 的全局变量,然后我的所有模块都可以外部该变量并使用它。但是我不得不担心那个模块会先于所有其他模块加载。但也许这就是通常这样做的方式?我很想知道什么是最佳做法。

很奇怪。如果您真的想要将所有内容分组,只需创建一个提供 /proc/foo 的模块并让其他所有内容都依赖于它。