我目前经常遇到一些硬件过热的问题。通过Linux内核,我发现目前完全支持热传感器,但是预先配置的限制似乎太高了。我目前正在寻找修改内核模块,但我不确定修改它的最佳方法是什么。我想要以下内容:
现在我不确定我应该使用什么虚拟文件接口。到目前为止,我看到以下选项:
/dev/
文件系统公开所有数据,使用ioctl()
修改限制我不确定这些方法的优点和缺点是什么。到目前为止,我已经看过sysfs了,看来这不是正确的方法。传感器的数量高度依赖于硬件,我必须添加各种黑客以获得每个传感器一个文件(或每个传感器一个目录),可能为每个传感器添加另一个kobject,以便我可以在结果目录中添加文件。以前传感器数据似乎可以通过/sys/class/hwmon/hwmon0/device/temp1_input
获得,但是它已被移除。
debugfs似乎也不是正确的方法,因为我对内核调试并不是那么感兴趣,而是提供了一种配置和读取传感器的更好方法。
然而,对于这样一个简单的设置来说,devfs似乎有点过分。公开传感器数据并通过用户空间配置限制的最佳方法是什么?
答案 0 :(得分:2)
根据Documentation/hwmon/sysfs-interface,fragment
和 Error:(91, 47) error: incompatible types: FragmentActivity cannot be converted to OnClickListener
已经为此定义,应尽可能以读写方式实现。
如果你的驱动程序不是这种情况,那么这就是你想要实现的。
答案 1 :(得分:1)
无需公开温度传感器的文件系统。使用热框架将温度传感器注册为热区,然后提供get / sysfs接口。可以在用户空间中使用。 浏览以下链接,了解如何从用户空间访问它。
https://www.lookup2learn.com/post/thermal-management-in-linux