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