1

我目前经常遇到一些硬件过热的问题。查看 Linux 内核,我发现目前完全支持热传感器,但是预配置的限制似乎太高了。我目前正在寻找修改内核模块,但我不确定修改它的最佳方法是什么。我想要以下内容:

  • 在某处有一个文件,我可以在其中读取当前温度
  • 有几个我可以从用户空间使用的文件来修改当前限制

现在我不确定我应该为此使用什么虚拟文件接口。到目前为止,我看到以下选项:

  • /dev/通过文件系统公开所有数据,ioctl()用于修改限制
  • 在 sysfs 中添加文件
  • 在 debugfs 中添加文件

我不确定每种方法的优缺点是什么。到目前为止,我已经查看了 sysfs,似乎这不是正确的方法。传感器的数量与硬件高度相关,我必须添加各种技巧来为每个传感器获取一个文件(或每个传感器一个目录),可能为每个传感器添加另一个 kobject,以便我可以在生成的目录中添加文件。以前,传感器数据似乎可以通过 获得/sys/class/hwmon/hwmon0/device/temp1_input,但是在那里被删除了。

debugfs 似乎也不是正确的方法,因为我对内核调试不太感兴趣,而是提供了一种更好的方式来配置和读取传感器。

然而,对于如此简单的设置,devfs 似乎有点过头了。

公开传感器数据并通过用户空间配置限制的最佳方式是什么?

4

2 回答 2

2

根据Documentation/hwmon/sysfs-interfacetemp[1-*]_max并且temp[1-*]_crit已经为此目的进行了定义,应尽可能以读写方式实现。如果您的驱动程序还不是这种情况,那么这就是您想要实现的。

于 2015-11-24T09:46:54.677 回答
1

无需为温度传感器公开文件系统。使用热框架将温度传感器注册为热区,然后提供 get /sysfs 接口。可以从用户空间使用。通过以下链接了解如何从用户空间访问它。

https://www.lookup2learn.com/post/thermal-management-in-linux

于 2020-05-13T12:21:46.417 回答