[lm-sensors] [PATCH 1/2] libsensors: Add support for instantaneous power sensors

Hans de Goede j.w.r.degoede at hhs.nl
Wed Oct 22 14:47:28 CEST 2008


Jean Delvare wrote:
> 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(-)
> 

I've reviewed this and it looks good.

Regards,

Hans

> --- 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
> 
> 





More information about the lm-sensors mailing list