[lm-sensors] Need some input for cleaning up FSC userspace code

Hans de Goede j.w.r.degoede at hhs.nl
Thu Oct 11 20:29:14 CEST 2007


Hi all,

Please ignore my rambling. While cycling home from work I gave this some more 
thought and I think I know how to solve this while keeping full compatibility 
with the current libsensors and apps using it.

Regards,

Hans


Hans de Goede wrote:
> Hi all,
> 
> I've been working today on creating support for the new fschmd in the 2.10.x 
> tree for the 2.10.5 release.
> 
> I've added code like this too the current fscpos (and fscher and fscscy) print 
> code:
> 
> void print_fscpos(const sensors_chip_name *name)
> {
>    char *label;
>    double voltage, temp, state, fan;
>    int valid;
> 
>    /* Check for the non standard temp1_state sysfs attr the old driver uses
>       if it isn't present we are talking to the new fschmd driver */
>    if (sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1_STATE,&state) != 0) {
>      print_fschmd(name);
>      return;
>    }
> 
>    /* no need to read TEMP1_STATE, as we just successfully did that above */
>    if (!sensors_get_label_and_valid(*name,SENSORS_FSCPOS_TEMP1,&label,&valid) &&
>        !sensors_get_feature(*name,SENSORS_FSCPOS_TEMP1,&temp)) {
> ......
> 
> 
> 
> This works fine with the old driver, however it won't work with the new driver 
> as currently lib/chips.c still contains the features list for the old driver, 
> which btw is not in a good state:
> 
> [hans at localhost lm-sensors]$ /usr/local/bin/sensors -u
> fscher-i2c-0-73
> Adapter: SMBus I801 adapter at 2400
> ERROR: Can't get feature `rev' data!
> alarms: 0.00 (alarms)
> control: 0.00 (control)
> +12V: 1.89 (in0)
> +5V: 1.98 (in1)
> Battery: 2.45 (in2)
> Temp1/CPU: 39.00 (temp1)
>    temp1_state: 1.00 (temp1_state)
> Temp2/MB: 34.00 (temp2)
>    temp2_state: 1.00 (temp2_state)
> Temp3/AUX: 127.00 (temp3)
>    temp3_state: 0.00 (temp3_state)
> Fan1/PS: 1320.00 (fan1)
>    pwm1: 1.00 (pwm1)
>    fan1_state: 0.00 (fan1_state)
> ERROR: Can't get feature `fan1_ripple' data!
> Fan2/CPU: 0.00 (fan2)
>    pwm2: 1.00 (pwm2)
>    fan2_state: 0.00 (fan2_state)
> ERROR: Can't get feature `fan2_ripple' data!
> Fan3/AUX: 0.00 (fan3)
>    pwm3: 1.00 (pwm3)
>    fan3_state: 0.00 (fan3_state)
> ERROR: Can't get feature `fan3_ripple' data!
> ERROR: Can't get feature `wdog_preset' data!
> ERROR: Can't get feature `wdog_state' data!
> ERROR: Can't get feature `wdog_control' data!
> 
> As you can see it refers to several 2.4 features not present or renamed in the 
> 2.6 driver.
> 
> 
> So what I want todo is add features for the old driver non sysfs interface 
> compliant attributes which are used in the old print_fscpos code, like 
> temp#_state and fan#_state, to the fschmd features list, and then use that 
> features list for all fsc chip prefixes. Then I'll update the old print code 
> for the old fscpos, scy and her drivers to use the new feature numbers and 
> things will work.
> 
> However this will break any existing applications which depend on the old FSC 
> SCY / POS / HER feature numbers. We have no in tree users of these, but still.
> 
> So what todo?
> 
> I guess it would be best to:
> -use my suggested fix to make one fschmd feature list including needed old
>   features and use that everywhere, but ....
> -make the feature numbers so that they are compatible with the feature numbers
>   of the old attributes
> 
> But then what todo with the no longer existing features, avoid the numbers in 
> the new fschmd feature list I guess, or still put them in for 2.4 users?
> 
> I guess I need to think a bit more about this, in the mean time any input is 
> appreciated.
> 
> Regards,
> 
> Hans
> 
> 
> 
> _______________________________________________
> lm-sensors mailing list
> lm-sensors at lm-sensors.org
> http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
> 





More information about the lm-sensors mailing list