diff --git a/sysfs/class_thermal.go b/sysfs/class_thermal.go index 10f4a9a7..c4e10634 100644 --- a/sysfs/class_thermal.go +++ b/sysfs/class_thermal.go @@ -63,6 +63,19 @@ func (fs FS) ClassThermalZoneStats() ([]ClassThermalZoneStats, error) { } func parseClassThermalZone(zone string) (ClassThermalZoneStats, error) { + + // Optional attributes. + modeContent, err := util.SysReadFile(filepath.Join(zone, "mode")) + if err != nil && !os.IsNotExist(err) && !os.IsPermission(err) { + return ClassThermalZoneStats{}, err + } + + if strings.TrimSpace(modeContent) == "disabled" { + return ClassThermalZoneStats{}, syscall.ENODATA + } + + zoneMode := util.ParseBool(modeContent) + // Required attributes. zoneType, err := util.SysReadFile(filepath.Join(zone, "type")) if err != nil { @@ -77,13 +90,6 @@ func parseClassThermalZone(zone string) (ClassThermalZoneStats, error) { return ClassThermalZoneStats{}, err } - // Optional attributes. - mode, err := util.SysReadFile(filepath.Join(zone, "mode")) - if err != nil && !os.IsNotExist(err) && !os.IsPermission(err) { - return ClassThermalZoneStats{}, err - } - zoneMode := util.ParseBool(mode) - var zonePassive *uint64 passive, err := util.ReadUintFromFile(filepath.Join(zone, "passive")) if os.IsNotExist(err) || os.IsPermission(err) {