[lm-sensors] [PATCH 2/3 v3] sensors: Print energy and power meters
Darrick J. Wong
djwong at us.ibm.com
Mon Apr 14 23:50:02 CEST 2008
Display power and energy meters in sensors. Essentially unchanged
since v2.
Signed-off-by: Darrick J. Wong <djwong at us.ibm.com>
Index: lm-sensors-3.0.0/prog/sensors/chips.c
===================================================================
--- lm-sensors-3.0.0.orig/prog/sensors/chips.c 2008-04-14 09:24:55.000000000 -0700
+++ lm-sensors-3.0.0/prog/sensors/chips.c 2008-04-14 09:25:58.000000000 -0700
@@ -401,6 +401,85 @@
printf("\n");
}
+static void print_chip_power(const sensors_chip_name *name,
+ const sensors_feature *feature,
+ int label_size)
+{
+ int need_space = 0;
+ const sensors_subfeature *sf, *sfmin, *sfmax, *sfint;
+ char *label;
+
+ if (!(label = sensors_get_label(name, feature))) {
+ fprintf(stderr, "ERROR: Can't get label of feature %s!\n",
+ feature->name);
+ return;
+ }
+ print_label(label, label_size);
+ free(label);
+
+ sf = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_POWER_AVERAGE);
+ if (sf)
+ printf("%6.2f W", get_value(name, sf));
+ 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(" (");
+
+ if (sfmin) {
+ printf("min = %6.2f W", get_value(name, sfmin));
+ need_space = 1;
+ }
+
+ if (sfmax) {
+ printf("%smax = %6.2f W", (need_space ? ", " : ""),
+ get_value(name, sfmax));
+ need_space = 1;
+ }
+
+ if (sfint) {
+ printf("%sinterval = %6.2f s", (need_space ? ", " : ""),
+ get_value(name, sfint));
+ need_space = 1;
+ }
+ printf(")");
+ }
+
+ printf("\n");
+}
+
+static void print_chip_energy(const sensors_chip_name *name,
+ const sensors_feature *feature,
+ int label_size)
+{
+ const sensors_subfeature *sf;
+ char *label;
+
+ if (!(label = sensors_get_label(name, feature))) {
+ fprintf(stderr, "ERROR: Can't get label of feature %s!\n",
+ feature->name);
+ return;
+ }
+ print_label(label, label_size);
+ free(label);
+
+ sf = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_ENERGY_INPUT);
+ if (sf)
+ printf("%6.2f J", get_value(name, sf));
+ else
+ printf(" N/A");
+
+ printf("\n");
+}
+
static void print_chip_vid(const sensors_chip_name *name,
const sensors_feature *feature,
int label_size)
@@ -468,6 +547,12 @@
case SENSORS_FEATURE_BEEP_ENABLE:
print_chip_beep_enable(name, feature, label_size);
break;
+ case SENSORS_FEATURE_POWER:
+ print_chip_power(name, feature, label_size);
+ break;
+ case SENSORS_FEATURE_ENERGY:
+ print_chip_energy(name, feature, label_size);
+ break;
default:
continue;
}
More information about the lm-sensors
mailing list