Hello, I ran powerdebug on i386 (ubuntu 13.04) and it seems its outputting wrong information in "Sensors" info page. Suspects are colored blue below -
# sudo ./powerdebug PowerDebug 0.7.2 Clocks Regulators Sensors Gpio Name Value coretemp temp1_crit_alarm 0.0 temp3_input 34.0 temp3_label 34.0 ----> This seems incorrect temp2_crit_alarm 0.0 temp1_crit 99.0 temp2_crit 99.0 temp3_crit 99.0 temp4_crit 99.0 temp5_crit 99.0 temp4_input 23.0 temp4_label 23.0 ----> This seems incorrect temp3_crit_alarm 0.0 temp4_crit_alarm 0.0 temp5_input 34.0 temp5_label 34.0 ----> This seems incorrect temp5_crit_alarm 0.0 temp1_input 34.0 temp1_label 34.0 ----> This seems incorrect temp1_max 80.0 temp2_max 80.0 temp3_max 80.0 temp4_max 80.0 temp5_max 80.0 temp2_input 28.0 temp2_label 28.0 ----> This seems incorrect The contents of these files are not any legal integer value as expected - # cat temp*_label Physical id 0 Core 0 Core 1 Core 2 Core 3 The problem I think is in the below code in utils.c/file_read_value()- ret = fscanf(file, format, value) == EOF ? -1 : 0; We are comparing with EOF. In this case fscanf is returning zero. So this check passes and returns success. So old value is retained in "value" from previous read. A simple fix would be to change the line to - ret = fscanf(file, format, value) <= 0 ? -1 : 0; Would you care to check? diff --git a/utils.c b/utils.c index 4d4b780..bfe2ba3 100644 --- a/utils.c +++ b/utils.c @@ -46,7 +46,7 @@ int file_read_value(const char *path, const char *name, goto out_free; } - ret = fscanf(file, format, value) == EOF ? -1 : 0; + ret = fscanf(file, format, value) <= 0 ? -1 : 0; fclose(file); out_free: -- Thanks, -Meraj
_______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev