hwmon
概述
hwmon,hardware monitor是linux内核中的一个子系统,用于提供对硬件设备,如温度传感器,电压监控器,风扇速度等的监控支持。该子系统允许用户通过标准的接口读取和控制硬件状态。尤其是温度,电压,风扇转速等。提供了统一的方式访问硬件监测信息。
hwmon子系统架构
在hwmon子系统中,主要即借助设备驱动模型中的设备的注册以及设备属性的创建,即可针对于一个硬件芯片创建多个属性文件。
hwmon子系统主要提供了接口hwmon_attr_show、hwmon_attr_store,同时抽象了针对温度芯片、风扇芯片、电源芯片等硬件监控芯片相关参数的支持,即温度芯片、风扇芯片、电源芯片等硬件监控芯片相关参数的访问接口,均会在接口hwmon_attr_show、hwmon_attr_store中被统一调用,而温度芯片、风扇芯片、电源芯片等硬件监控芯片只需要实现hwmon_ops类型函数指针即可。调用关系如下所示,其中,HWMON子系统层则为hwmon子层抽象的部分,而最下层则由具体的hwmon 设备驱动实现即可。
硬件检测
1 | devm_hwmon_device_register_with_groups(dev, "my_hwmon", NULL, my_temp_attr); |
数据读取/设置
1 | sensor_device_attribute |
数据暴露
sys/class/hwmon下暴露。
1 | cat /sys/class/hwmon/hwmon0/temp1_input # 获取温度 |
驱动卸载
1 | void hwmon_device_unregister(struct device *dev); |