[lm-sensors] [PATCH 1/2] libsensors: Add support for instantaneous power sensors
Jean Delvare
khali at linux-fr.org
Wed Oct 22 13:46:28 CEST 2008
Add support for instantaneous power sensors.
---
I'd appreciate review and testing of this patch. Darrick, please test
that this doesn't break support of your IBM chips.
doc/libsensors-API.txt | 6 ++++++
lib/sensors.h | 6 ++++--
lib/sysfs.c | 3 +++
prog/sensors/chips.c | 28 +++++++++++++++++++++-------
4 files changed, 34 insertions(+), 9 deletions(-)
--- lm-sensors-3.orig/lib/sensors.h 2008-10-22 11:50:39.000000000 +0200
+++ lm-sensors-3/lib/sensors.h 2008-10-22 12:03:36.000000000 +0200
@@ -31,7 +31,7 @@
when the API + ABI breaks), the third digit is incremented to track small
API additions like new flags / enum values. The second digit is for tracking
larger additions like new methods. */
-#define SENSORS_API_VERSION 0x401
+#define SENSORS_API_VERSION 0x402
#define SENSORS_CHIP_NAME_PREFIX_ANY NULL
#define SENSORS_CHIP_NAME_ADDR_ANY (-1)
@@ -175,7 +175,9 @@ typedef enum sensors_subfeature_type {
SENSORS_SUBFEATURE_POWER_AVERAGE = SENSORS_FEATURE_POWER << 8,
SENSORS_SUBFEATURE_POWER_AVERAGE_HIGHEST,
SENSORS_SUBFEATURE_POWER_AVERAGE_LOWEST,
-
+ SENSORS_SUBFEATURE_POWER_INPUT,
+ SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST,
+ SENSORS_SUBFEATURE_POWER_INPUT_LOWEST,
SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL = (SENSORS_FEATURE_POWER << 8) | 0x80,
SENSORS_SUBFEATURE_ENERGY_INPUT = SENSORS_FEATURE_ENERGY << 8,
--- lm-sensors-3.orig/lib/sysfs.c 2008-10-22 11:50:39.000000000 +0200
+++ lm-sensors-3/lib/sysfs.c 2008-10-22 12:03:36.000000000 +0200
@@ -247,6 +247,9 @@ static const struct subfeature_type_matc
{ "average", SENSORS_SUBFEATURE_POWER_AVERAGE },
{ "average_highest", SENSORS_SUBFEATURE_POWER_AVERAGE_HIGHEST },
{ "average_lowest", SENSORS_SUBFEATURE_POWER_AVERAGE_LOWEST },
+ { "input", SENSORS_SUBFEATURE_POWER_INPUT },
+ { "input_highest", SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST },
+ { "input_lowest", SENSORS_SUBFEATURE_POWER_INPUT_LOWEST },
{ "average_interval", SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL },
{ NULL, 0 }
};
--- lm-sensors-3.orig/prog/sensors/chips.c 2008-10-22 11:50:38.000000000 +0200
+++ lm-sensors-3/prog/sensors/chips.c 2008-10-22 12:04:38.000000000 +0200
@@ -449,8 +449,28 @@ static void print_chip_power(const senso
print_label(label, label_size);
free(label);
+ /* Power sensors come in 2 flavors: instantaneous and averaged.
+ To keep things simple, we assume that each sensor only implements
+ one flavor. */
sf = sensors_get_subfeature(name, feature,
- SENSORS_SUBFEATURE_POWER_AVERAGE);
+ SENSORS_SUBFEATURE_POWER_INPUT);
+ if (sf) {
+ sfmin = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST);
+ sfmax = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_POWER_INPUT_LOWEST);
+ sfint = NULL;
+ } else {
+ sf = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_POWER_AVERAGE);
+ sfmin = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_POWER_AVERAGE_HIGHEST);
+ sfmax = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_POWER_AVERAGE_LOWEST);
+ sfint = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL);
+ }
+
if (sf) {
val = get_value(name, sf);
scale_value(&val, &unit);
@@ -458,12 +478,6 @@ static void print_chip_power(const senso
} else
printf(" N/A");
- sfmin = sensors_get_subfeature(name, feature,
- SENSORS_SUBFEATURE_POWER_AVERAGE_HIGHEST);
- sfmax = sensors_get_subfeature(name, feature,
- SENSORS_SUBFEATURE_POWER_AVERAGE_LOWEST);
- sfint = sensors_get_subfeature(name, feature,
- SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL);
if (sfmin || sfmax || sfint) {
printf(" (");
--- lm-sensors-3.orig/doc/libsensors-API.txt 2008-10-22 12:03:35.000000000 +0200
+++ lm-sensors-3/doc/libsensors-API.txt 2008-10-22 12:06:42.000000000 +0200
@@ -6,6 +6,12 @@ over time. This document summarizes thes
authors can quickly figure out how to test for the availability of a
given new feature.
+0x402 lm-sensors SVN
+* Added support for instantaneous power sensors
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST
+ enum sensors_subfeature_type SENSORS_SUBFEATURE_POWER_INPUT_LOWEST
+
0x401 lm-sensors 3.0.2 to 3.0.3
* Added bus type "virtual":
#define SENSORS_BUS_TYPE_VIRTUAL
--
Jean Delvare
More information about the lm-sensors
mailing list