如何从内核空间读/写/从linux / proc文件?

我正在编写一个由用户程序和一个内核模块组成的程序。 内核模块需要收集它将“发送”到用户程序的数据。 这必须通过/ proc文件完成。 现在,我创build了这个文件,一切都很好,花了很多年阅读互联网的答案,仍然找不到一个。 你如何内核空间读取/写入/ proc文件? 提供给procfile的write_proc和read_proc用于从USER空间读取和写入数据,而我需要模块能够自己写入/ proc文件。

这不是它的工作原理。 当一个用户空间程序打开这些文件时,这些文件就会根据具体情况在运行中生成。 他们中的大多数是只读的,并由一个共同的机制产生:

  • 用create_proc_read_entry注册一个条目
  • 提供一个在读取文件时调用的回调函数(按惯例称为read_proc)
  • 此回调函数应填充提供的缓冲区,并(通常)调用proc_calc_metrics更新提供给用户空间的文件指针等。

您(来自内核)不会“写入”procfs文件,当用户请求时会动态提供结果。

将数据传递到用户空间的方法之一是seq_files。 为了配置(写入)内核参数,您可能需要考虑sys-fs节点。

谢谢,维杰