5

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

4

2 回答 2

9

这不是它的工作原理。当用户空间程序打开文件时,它们会根据具体情况动态生成。它们中的大多数是只读的,并由一种通用机制生成:

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

您(来自内核)不会“写入” procfs 文件,而是在用户空间请求它们时动态提供结果。

于 2010-12-09T16:29:58.903 回答
0

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

谢谢,维杰

于 2010-12-09T19:12:52.903 回答