我目前经常遇到一些硬件过热的问题。查看 Linux 内核,我发现目前完全支持热传感器,但是预配置的限制似乎太高了。我目前正在寻找修改内核模块,但我不确定修改它的最佳方法是什么。我想要以下内容:
- 在某处有一个文件,我可以在其中读取当前温度
- 有几个我可以从用户空间使用的文件来修改当前限制
现在我不确定我应该为此使用什么虚拟文件接口。到目前为止,我看到以下选项:
/dev/
通过文件系统公开所有数据,ioctl()
用于修改限制- 在 sysfs 中添加文件
- 在 debugfs 中添加文件
我不确定每种方法的优缺点是什么。到目前为止,我已经查看了 sysfs,似乎这不是正确的方法。传感器的数量与硬件高度相关,我必须添加各种技巧来为每个传感器获取一个文件(或每个传感器一个目录),可能为每个传感器添加另一个 kobject,以便我可以在生成的目录中添加文件。以前,传感器数据似乎可以通过 获得/sys/class/hwmon/hwmon0/device/temp1_input
,但是在那里被删除了。
debugfs 似乎也不是正确的方法,因为我对内核调试不太感兴趣,而是提供了一种更好的方式来配置和读取传感器。
然而,对于如此简单的设置,devfs 似乎有点过头了。
公开传感器数据并通过用户空间配置限制的最佳方式是什么?