如何在 linux 内核中的 "sys' and "proc" 文件之间进行选择

How to choose between "sys' and "proc" files in linux kernel

据我所知,

在Linux文件系统中,为了用户space和内核space之间的信息通信,使用了两种虚拟文件系统。

1) Proc 文件系统 http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html

2) sysfs 文件系统 https://en.wikipedia.org/wiki/Sysfs

在linux内核代码中,我看到一些子系统已经使用proc文件来执行这样的用户space-内核space通信,并且一些系统已经使用同样关注的 sysfs 文件。

所以我只想知道,如果我要编写新的 linux 内核模块或驱动程序,那么如何选择虚拟文件?我什么时候应该使用 sysfs 什么时候应该使用 proc 文件?

如果我在这里有任何误解,请告诉我。

关于 procfs 中的 adding/modifying 个条目,我唯一想到的是当你使用 虚拟内存 时子系统本身。我说的是 /proc/sys/vm/ 中的条目(因此,如果您出于某种原因修改 writebackovercomit交换等)。 如果您正在编写与已通过 procfs 导出的内容无关的驱动程序或模块,您应该使用 sysfs .

看了很多之后我有以下理解

1) Proc 文件是一些较旧的方法。它在每次读取或写入调用时分配 PAGE 大小的内存,并且该系统存在所有错误(就像你是 reading/write 任何设备的 proc 条目和设备已从系统中删除..Proc 系统中没有处理这个..{从 LDD 读取它:) })。因此内核开发者社区建议使用更高级和更复杂的 SYS 文件系统。