Changeset 4667

Show
Ignore:
Timestamp:
08/13/07 22:16:42 (1 year ago)
Author:
khali
Message:

Pass the structures by reference inside libsensors. Again a small
performance gain, and this makes the internal code consistent with the
public functions.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lm-sensors/branches/lm-sensors-3.0.0/lib/access.c

    r4666 r4667  
    2828#include "general.h" 
    2929 
    30 static int sensors_eval_expr(sensors_chip_name chipname,  
     30static int sensors_eval_expr(const sensors_chip_name *name, 
    3131                             const sensors_expr *expr, 
    3232                             double val, double *result); 
     
    7575   you want the match that was latest in the config file. */ 
    7676static sensors_chip * 
    77 sensors_for_all_config_chips(sensors_chip_name chip_name, 
     77sensors_for_all_config_chips(const sensors_chip_name *name, 
    7878                             const sensors_chip *last) 
    7979{ 
     
    8686                chips = sensors_config_chips[nr].chips; 
    8787                for (i = 0; i < chips.fits_count; i++) { 
    88                         if (sensors_match_chip(&chips.fits[i], &chip_name)) 
     88                        if (sensors_match_chip(&chips.fits[i], name)) 
    8989                                return sensors_config_chips + nr; 
    9090                } 
     
    134134   one chip, or whether it has wildcards. Returns 0 if it is absolute, 1 
    135135   if there are wildcards. */ 
    136 static int sensors_chip_name_has_wildcards(sensors_chip_name chip) 
    137 { 
    138         if ((chip.prefix == SENSORS_CHIP_NAME_PREFIX_ANY) || 
    139             (chip.bus == SENSORS_CHIP_NAME_BUS_ANY) || 
    140             (chip.bus == SENSORS_CHIP_NAME_BUS_ANY_I2C) || 
    141             (chip.addr == SENSORS_CHIP_NAME_ADDR_ANY)) 
     136static int sensors_chip_name_has_wildcards(const sensors_chip_name *chip) 
     137{ 
     138        if ((chip->prefix == SENSORS_CHIP_NAME_PREFIX_ANY) || 
     139            (chip->bus == SENSORS_CHIP_NAME_BUS_ANY) || 
     140            (chip->bus == SENSORS_CHIP_NAME_BUS_ANY_I2C) || 
     141            (chip->addr == SENSORS_CHIP_NAME_ADDR_ANY)) 
    142142                return 1; 
    143143        else 
     
    158158 
    159159        *result = NULL; 
    160         if (sensors_chip_name_has_wildcards(*name)) 
     160        if (sensors_chip_name_has_wildcards(name)) 
    161161                return -SENSORS_ERR_WILDCARDS; 
    162162        if (!(featureptr = sensors_lookup_feature_nr(name, feature))) 
    163163                return -SENSORS_ERR_NO_ENTRY; 
    164164 
    165         for (chip = NULL; (chip = sensors_for_all_config_chips(*name, chip));) 
     165        for (chip = NULL; (chip = sensors_for_all_config_chips(name, chip));) 
    166166                for (i = 0; i < chip->labels_count; i++) 
    167167                        if (!strcasecmp(featureptr->data.name,chip->labels[i].name)){ 
     
    211211                                        feature->data.mapping)->data.name; 
    212212 
    213         for (chip = NULL; (chip = sensors_for_all_config_chips(*name, chip));) 
     213        for (chip = NULL; (chip = sensors_for_all_config_chips(name, chip));) 
    214214                for (i = 0; i < chip->ignores_count; i++) 
    215215                        if (!strcasecmp(feature->data.name, chip->ignores[i].name) || 
     
    234234        int final_expr = 0; 
    235235 
    236         if (sensors_chip_name_has_wildcards(*name)) 
     236        if (sensors_chip_name_has_wildcards(name)) 
    237237                return -SENSORS_ERR_WILDCARDS; 
    238238        if (!(main_feature = sensors_lookup_feature_nr(name, feature))) 
     
    246246                return -SENSORS_ERR_ACCESS_R; 
    247247        for (chip = NULL; 
    248              !expr && (chip = sensors_for_all_config_chips(*name, chip));) 
     248             !expr && (chip = sensors_for_all_config_chips(name, chip));) 
    249249                for (i = 0; !final_expr && (i < chip->computes_count); i++) { 
    250250                        if (!strcasecmp(main_feature->data.name, chip->computes[i].name)) { 
     
    256256                        } 
    257257                } 
    258         if (sensors_read_sysfs_attr(*name, feature, &val)) 
     258        if (sensors_read_sysfs_attr(name, feature, &val)) 
    259259                return -SENSORS_ERR_PROC; 
    260260        if (!expr) 
    261261                *result = val; 
    262         else if ((res = sensors_eval_expr(*name, expr, val, result))) 
     262        else if ((res = sensors_eval_expr(name, expr, val, result))) 
    263263                return res; 
    264264        return 0; 
     
    279279        double to_write; 
    280280 
    281         if (sensors_chip_name_has_wildcards(*name)) 
     281        if (sensors_chip_name_has_wildcards(name)) 
    282282                return -SENSORS_ERR_WILDCARDS; 
    283283        if (!(main_feature = sensors_lookup_feature_nr(name, feature))) 
     
    291291                return -SENSORS_ERR_ACCESS_W; 
    292292        for (chip = NULL; 
    293              !expr && (chip = sensors_for_all_config_chips(*name, chip));) 
     293             !expr && (chip = sensors_for_all_config_chips(name, chip));) 
    294294                for (i = 0; !final_expr && (i < chip->computes_count); i++) 
    295295                        if (!strcasecmp(main_feature->data.name, chip->computes[i].name)) { 
     
    303303        to_write = value; 
    304304        if (expr) 
    305                 if ((res = sensors_eval_expr(*name, expr, value, &to_write))) 
     305                if ((res = sensors_eval_expr(name, expr, value, &to_write))) 
    306306                        return res; 
    307         if (sensors_write_sysfs_attr(*name, feature, to_write)) 
     307        if (sensors_write_sysfs_attr(name, feature, to_write)) 
    308308                return -SENSORS_ERR_PROC; 
    309309        return 0; 
     
    356356 
    357357/* Evaluate an expression */ 
    358 int sensors_eval_expr(sensors_chip_name chipname, const sensors_expr * expr, 
     358int sensors_eval_expr(const sensors_chip_name *name, 
     359                      const sensors_expr *expr, 
    359360                      double val, double *result) 
    360361{ 
     
    372373        } 
    373374        if (expr->kind == sensors_kind_var) { 
    374                 if (!(feature = sensors_lookup_feature_name(&chipname, 
     375                if (!(feature = sensors_lookup_feature_name(name, 
    375376                                                            expr->data.var))) 
    376377                        return SENSORS_ERR_NO_ENTRY; 
    377                 if (!(res = sensors_get_feature(&chipname, feature->data.number, result))) 
     378                if (!(res = sensors_get_feature(name, feature->data.number, result))) 
    378379                        return res; 
    379380                return 0; 
    380381        } 
    381         if ((res = sensors_eval_expr(chipname, expr->data.subexpr.sub1, val, &res1))) 
     382        if ((res = sensors_eval_expr(name, expr->data.subexpr.sub1, val, &res1))) 
    382383                return res; 
    383384        if (expr->data.subexpr.sub2 && 
    384             (res = sensors_eval_expr(chipname, expr->data.subexpr.sub2, val, &res2))) 
     385            (res = sensors_eval_expr(name, expr->data.subexpr.sub2, val, &res2))) 
    385386                return res; 
    386387        switch (expr->data.subexpr.op) { 
     
    417418   contain wildcards!  This function will return 0 on success, and <0 on  
    418419   failure. */ 
    419 static int sensors_do_this_chip_sets(sensors_chip_name name) 
     420static int sensors_do_this_chip_sets(const sensors_chip_name *name) 
    420421{ 
    421422        sensors_chip *chip; 
     
    431432        for (chip = NULL; (chip = sensors_for_all_config_chips(name, chip));) 
    432433                for (i = 0; i < chip->sets_count; i++) { 
    433                         feature = sensors_lookup_feature_name(&name, 
     434                        feature = sensors_lookup_feature_name(name, 
    434435                                                        chip->sets[i].name); 
    435436                        if (!feature) { 
     
    459460                                continue; 
    460461                        } 
    461                         if ((res = sensors_set_feature(&name, feature_nr, value))) { 
     462                        if ((res = sensors_set_feature(name, feature_nr, value))) { 
    462463                                sensors_parse_error("Failed to set feature", 
    463464                                                chip->sets[i].lineno); 
     
    480481        for (nr = 0; (found_name = sensors_get_detected_chips(&nr));) 
    481482                if (sensors_match_chip(name, found_name)) { 
    482                         this_res = sensors_do_this_chip_sets(*found_name); 
     483                        this_res = sensors_do_this_chip_sets(found_name); 
    483484                        if (!res) 
    484485                                res = this_res; 
  • lm-sensors/branches/lm-sensors-3.0.0/lib/init.c

    r4545 r4667  
    2828#include "scanner.h" 
    2929 
    30 static void free_chip_name(sensors_chip_name name); 
     30static void free_chip_name(sensors_chip_name *name); 
    3131static void free_chip_features(sensors_chip_feature *features); 
    32 static void free_bus(sensors_bus bus); 
    33 static void free_chip(sensors_chip chip); 
    34 static void free_label(sensors_label label); 
    35 static void free_set(sensors_set set); 
    36 static void free_compute(sensors_compute compute); 
    37 static void free_ignore(sensors_ignore ignore); 
     32static void free_bus(sensors_bus *bus); 
     33static void free_chip(sensors_chip *chip); 
     34static void free_label(sensors_label *label); 
     35static void free_set(sensors_set *set); 
     36static void free_compute(sensors_compute *compute); 
     37static void free_ignore(sensors_ignore *ignore); 
    3838static void free_expr(sensors_expr *expr); 
    3939 
     
    6262 
    6363  for (i = 0; i < sensors_proc_chips_count; i++) { 
    64     free_chip_name(sensors_proc_chips[i].chip); 
     64    free_chip_name(&sensors_proc_chips[i].chip); 
    6565    free_chip_features(sensors_proc_chips[i].feature); 
    6666  } 
     
    7070   
    7171  for (i = 0; i < sensors_config_busses_count; i++) 
    72     free_bus(sensors_config_busses[i]); 
     72    free_bus(&sensors_config_busses[i]); 
    7373  free(sensors_config_busses); 
    7474  sensors_config_busses = NULL; 
     
    7676 
    7777  for (i = 0; i < sensors_config_chips_count; i++) 
    78     free_chip(sensors_config_chips[i]); 
     78    free_chip(&sensors_config_chips[i]); 
    7979  free(sensors_config_chips); 
    8080  sensors_config_chips = NULL; 
     
    8282 
    8383  for (i = 0; i < sensors_proc_bus_count; i++) 
    84     free_bus(sensors_proc_bus[i]); 
     84    free_bus(&sensors_proc_bus[i]); 
    8585  free(sensors_proc_bus); 
    8686  sensors_proc_bus = NULL; 
     
    8888} 
    8989 
    90 void free_chip_name(sensors_chip_name name) 
     90void free_chip_name(sensors_chip_name *name) 
    9191{ 
    92   free(name.prefix); 
    93   free(name.busname); 
     92  free(name->prefix); 
     93  free(name->busname); 
    9494} 
    9595 
     
    103103} 
    104104 
    105 void free_bus(sensors_bus bus) 
     105void free_bus(sensors_bus *bus) 
    106106{ 
    107   free(bus.adapter); 
     107  free(bus->adapter); 
    108108} 
    109109 
    110 void free_chip(sensors_chip chip) 
     110void free_chip(sensors_chip *chip) 
    111111{ 
    112112  int i; 
    113113 
    114   for (i = 0; i < chip.chips.fits_count; i++) 
    115     free_chip_name(chip.chips.fits[i]); 
    116   free(chip.chips.fits); 
    117   chip.chips.fits_count = chip.chips.fits_max = 0; 
     114  for (i = 0; i < chip->chips.fits_count; i++) 
     115    free_chip_name(&chip->chips.fits[i]); 
     116  free(chip->chips.fits); 
     117  chip->chips.fits_count = chip->chips.fits_max = 0; 
    118118 
    119   for (i = 0; i < chip.labels_count; i++) 
    120     free_label(chip.labels[i]); 
    121   free(chip.labels); 
    122   chip.labels_count = chip.labels_max = 0; 
     119  for (i = 0; i < chip->labels_count; i++) 
     120    free_label(&chip->labels[i]); 
     121  free(chip->labels); 
     122  chip->labels_count = chip->labels_max = 0; 
    123123 
    124   for (i = 0; i < chip.sets_count; i++) 
    125     free_set(chip.sets[i]); 
    126   free(chip.sets); 
    127   chip.sets_count = chip.sets_max = 0; 
     124  for (i = 0; i < chip->sets_count; i++) 
     125    free_set(&chip->sets[i]); 
     126  free(chip->sets); 
     127  chip->sets_count = chip->sets_max = 0; 
    128128 
    129   for (i = 0; i < chip.computes_count; i++) 
    130     free_compute(chip.computes[i]); 
    131   free(chip.computes); 
    132   chip.computes_count = chip.computes_max = 0; 
     129  for (i = 0; i < chip->computes_count; i++) 
     130    free_compute(&chip->computes[i]); 
     131  free(chip->computes); 
     132  chip->computes_count = chip->computes_max = 0; 
    133133 
    134   for (i = 0; i < chip.ignores_count; i++) 
    135     free_ignore(chip.ignores[i]); 
    136   free(chip.ignores); 
    137   chip.ignores_count = chip.ignores_max = 0; 
     134  for (i = 0; i < chip->ignores_count; i++) 
     135    free_ignore(&chip->ignores[i]); 
     136  free(chip->ignores); 
     137  chip->ignores_count = chip->ignores_max = 0; 
    138138} 
    139139 
    140 void free_label(sensors_label label) 
     140void free_label(sensors_label *label) 
    141141{ 
    142   free(label.name); 
    143   free(label.value); 
     142  free(label->name); 
     143  free(label->value); 
    144144} 
    145145 
    146 void free_set(sensors_set set) 
     146void free_set(sensors_set *set) 
    147147{ 
    148   free(set.name); 
    149   free_expr(set.value); 
     148  free(set->name); 
     149  free_expr(set->value); 
    150150} 
    151151 
    152 void free_compute(sensors_compute compute) 
     152void free_compute(sensors_compute *compute) 
    153153{ 
    154   free(compute.name); 
    155   free_expr(compute.from_proc); 
    156   free_expr(compute.to_proc); 
     154  free(compute->name); 
     155  free_expr(compute->from_proc); 
     156  free_expr(compute->to_proc); 
    157157} 
    158158 
    159 void free_ignore(sensors_ignore ignore) 
     159void free_ignore(sensors_ignore *ignore) 
    160160{ 
    161   free(ignore.name); 
     161  free(ignore->name); 
    162162} 
    163163 
  • lm-sensors/branches/lm-sensors-3.0.0/lib/sysfs.c

    r4638 r4667  
    397397} 
    398398 
    399 int sensors_read_sysfs_attr(sensors_chip_name name, int feature, double *value) 
     399int sensors_read_sysfs_attr(const sensors_chip_name *name, int feature, 
     400                            double *value) 
    400401{ 
    401402        const sensors_chip_feature *the_feature; 
     
    407408        const char *suffix = ""; 
    408409 
    409         if (!(the_feature = sensors_lookup_feature_nr(&name, feature))) 
     410        if (!(the_feature = sensors_lookup_feature_nr(name, feature))) 
    410411                return -SENSORS_ERR_NO_ENTRY; 
    411412 
     
    416417                suffix = "_input"; 
    417418 
    418         snprintf(n, NAME_MAX, "%s/%s%s", name.busname, the_feature->data.name, 
     419        snprintf(n, NAME_MAX, "%s/%s%s", name->busname, the_feature->data.name, 
    419420                 suffix); 
    420421        if ((f = fopen(n, "r"))) { 
     
    431432} 
    432433   
    433 int sensors_write_sysfs_attr(sensors_chip_name name, int feature, double value) 
     434int sensors_write_sysfs_attr(const sensors_chip_name *name, int feature, 
     435                             double value) 
    434436{ 
    435437        const sensors_chip_feature *the_feature; 
     
    441443        const char *suffix = ""; 
    442444  
    443         if (!(the_feature = sensors_lookup_feature_nr(&name, feature))) 
     445        if (!(the_feature = sensors_lookup_feature_nr(name, feature))) 
    444446                return -SENSORS_ERR_NO_ENTRY; 
    445447 
     
    450452                suffix = "_input"; 
    451453 
    452         snprintf(n, NAME_MAX, "%s/%s%s", name.busname, the_feature->data.name, 
     454        snprintf(n, NAME_MAX, "%s/%s%s", name->busname, the_feature->data.name, 
    453455                 suffix); 
    454456        if ((f = fopen(n, "w"))) { 
  • lm-sensors/branches/lm-sensors-3.0.0/lib/sysfs.h

    r4553 r4667  
    3030 
    3131/* Read a value out of a sysfs attribute file */ 
    32 int sensors_read_sysfs_attr(sensors_chip_name name, int feature, double *value); 
     32int sensors_read_sysfs_attr(const sensors_chip_name *name, int feature, 
     33                            double *value); 
    3334 
    3435/* Write a value to a sysfs attribute file */ 
    35 int sensors_write_sysfs_attr(sensors_chip_name name, int feature, double value); 
     36int sensors_write_sysfs_attr(const sensors_chip_name *name, int feature, 
     37                             double value); 
    3638 
    3739#endif /* !SENSORS_LIB_SYSFS_H */