Changeset 2654

Show
Ignore:
Timestamp:
08/08/04 18:38:28 (10 years ago)
Author:
khali
Message:

Allow an alternate sysfs file name for chip features. This is

needed to provide backward compatibility when changes are made
to the sysfs interface (policy change or driver fix).
The first item for which this is needed is VID files. The name
we chose, in0_ref, is bad (because motherboard manufacturers can
use any input for VCore, regardless of the recommendations.
Thus, the new name cpu0_vid is better. Drivers will be updated
later.

Location:
lm-sensors/trunk/lib
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/lib/data.h

    r2059 r2654  
    162162  const char *sysname; 
    163163  int sysscaling; 
     164  const char *altsysname; 
    164165} sensors_chip_feature; 
    165166 
  • lm-sensors/trunk/lib/proc.c

    r2426 r2654  
    7272                                       sizeof(struct sensors_bus)) 
    7373 
    74 int getsysname(const sensors_chip_feature *feature, char *sysname, int *sysmag); 
     74int getsysname(const sensors_chip_feature *feature, char *sysname, 
     75        int *sysmag, char *altsysname); 
    7576 
    7677/* This reads /proc/sys/dev/sensors/chips into memory */ 
     
    305306        int buflen = BUF_LEN; 
    306307        int mag, eepromoffset, fd, ret=0; 
    307         char n[NAME_MAX]; 
    308         FILE *f; 
    309308 
    310309        if(!foundsysfs) 
     
    314313                return -SENSORS_ERR_NO_ENTRY; 
    315314        if(foundsysfs) { 
     315                char n[NAME_MAX], altn[NAME_MAX]; 
     316                FILE *f; 
    316317                strcpy(n, name.busname); 
    317318                strcat(n, "/"); 
     
    336337                                return -SENSORS_ERR_PROC; 
    337338                } else { 
     339                        strcpy(altn, n); 
    338340                        /* use rindex to append sysname to n */ 
    339                         getsysname(the_feature, rindex(n, '\0'), &mag); 
    340                         if ((f = fopen(n, "r")) != NULL) { 
     341                        getsysname(the_feature, rindex(n, '\0'), &mag, rindex(altn, '\0')); 
     342                        if ((f = fopen(n, "r")) != NULL 
     343                         || (f = fopen(altn, "r")) != NULL) { 
    341344                                fscanf(f, "%lf", value); 
    342345                                fclose(f); 
     
    369372        int buflen = BUF_LEN; 
    370373        int mag; 
    371         char n[NAME_MAX]; 
    372         FILE *f; 
    373374  
    374375        if(!foundsysfs) 
     
    378379                return -SENSORS_ERR_NO_ENTRY; 
    379380        if(foundsysfs) { 
     381                char n[NAME_MAX], altn[NAME_MAX]; 
     382                FILE *f; 
    380383                strcpy(n, name.busname); 
    381384                strcat(n, "/"); 
     385                strcpy(altn, n); 
    382386                /* use rindex to append sysname to n */ 
    383                 getsysname(the_feature, rindex(n, '\0'), &mag); 
    384                 if ((f = fopen(n, "w")) != NULL) { 
     387                getsysname(the_feature, rindex(n, '\0'), &mag, rindex(altn, '\0')); 
     388                if ((f = fopen(n, "w")) != NULL 
     389                 || (f = fopen(altn, "w")) != NULL) { 
    385390                        for (; mag > 0; mag --) 
    386391                                value *= 10.0; 
     
    455460                    Documentation/i2c/sysfs_interface in the kernel 
    456461*/ 
    457 int getsysname(const sensors_chip_feature *feature, char *sysname, int *sysmag) 
     462int getsysname(const sensors_chip_feature *feature, char *sysname, 
     463        int *sysmag, char *altsysname) 
    458464{ 
    459465        const char * name = feature->name; 
     
    465471                const char * name, * sysname; 
    466472                const int sysmag; 
     473                const char * altsysname; 
    467474        }; 
    468475 
     
    472479                { "beeps", "beep_mask", 0 }, 
    473480                { "pwm", "fan1_pwm", 0 }, 
    474                 { "vid", "in0_ref", INMAG }, 
     481                { "vid", "cpu0_vid", INMAG, "in0_ref" }, 
    475482                { "remote_temp", "temp2_input", TEMPMAG }, 
    476483                { "remote_temp_hyst", "temp2_max_hyst", TEMPMAG }, 
     
    485492 
    486493 
     494/* default to a non-existent alternate name (should rarely be tried) */ 
     495        strcpy(altsysname, "_"); 
     496 
    487497/* use override in feature structure if present */ 
    488498        if(feature->sysname != NULL) { 
     
    499509                if(!strcmp(m->name, name)) { 
    500510                        strcpy(sysname, m->sysname); 
     511                        if (m->altsysname != NULL) 
     512                                strcpy(altsysname, m->altsysname); 
    501513                        *sysmag = m->sysmag; 
    502514                        return 0;