Changeset 119

Show
Ignore:
Timestamp:
12/25/98 22:51:59 (14 years ago)
Author:
frodo
Message:

Moved some library functions around, to put them in more logical files.
No external changes.

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

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/lib/Module.mk

    r99 r119  
    4343LIBSHOBJECTS := $(LIBCSOURCES:.c=.lo) $(LIBOTHEROBJECTS:.o=.lo) 
    4444LIBSTOBJECTS := $(LIBCSOURCES:.c=.ao) $(LIBOTHEROBJECTS:.o=.ao) 
    45 LIBEXTRACLEAN := $(MODULE_DIR)/conf_parse.h 
     45LIBEXTRACLEAN := $(MODULE_DIR)/conf-parse.h 
    4646 
    4747LIBHEADERFILES := $(MODULE_DIR)/error.h $(MODULE_DIR)/sensors.h 
  • lm-sensors/trunk/lib/access.c

    r110 r119  
    280280  return NULL; 
    281281} 
     282 
     283int sensors_eval_expr(sensors_chip_name chipname, sensors_expr *expr, 
     284                      double val, double *result) 
     285{ 
     286  double res1,res2; 
     287  int res; 
     288  sensors_chip_feature *feature; 
     289 
     290  if (expr->kind == sensors_kind_val) { 
     291    *result = expr->data.val; 
     292    return 0; 
     293  } 
     294  if (expr->kind == sensors_kind_source) { 
     295    *result = val; 
     296    return 0; 
     297  } 
     298  if (expr->kind == sensors_kind_var) { 
     299    if (! (feature = sensors_lookup_feature_name(chipname.prefix, 
     300                                                expr->data.var))) 
     301      return SENSORS_ERR_NO_ENTRY; 
     302    if (! (res = sensors_get_feature(chipname,feature->number,result))) 
     303      return res; 
     304    return 0; 
     305  } 
     306  if ((res = sensors_eval_expr(chipname,expr->data.subexpr.sub1,val,&res1))) 
     307    return res; 
     308  if (expr->data.subexpr.sub2 && 
     309      (res = sensors_eval_expr(chipname,expr->data.subexpr.sub2,val,&res2))) 
     310    return res; 
     311  switch(expr->data.subexpr.op) { 
     312  case sensors_add: 
     313    *result = res1 + res2; 
     314    return 0; 
     315  case sensors_sub: 
     316    *result = res1 - res2; 
     317    return 0; 
     318  case sensors_multiply: 
     319    *result = res1 * res2; 
     320    return 0; 
     321  case sensors_divide: 
     322    if (res2 == 0.0) 
     323      return -SENSORS_ERR_DIV_ZERO; 
     324    *result = res1 / res2; 
     325    return 0; 
     326  case sensors_negate: 
     327    *result = -res1; 
     328    return 0; 
     329  } 
     330  return 0; 
     331} 
     332 
    282333       
  • lm-sensors/trunk/lib/access.h

    r110 r119  
    2323#include "sensors.h" 
    2424#include "data.h" 
    25  
    26 typedef struct sensors_chip_feature { 
    27   int number; 
    28   const char *name; 
    29   int logical_mapping; 
    30   int compute_mapping; 
    31   int mode; 
    32   int sysctl; 
    33   int offset; 
    34   int scaling; 
    35 } sensors_chip_feature; 
    36  
    37 typedef struct sensors_chip_features { 
    38   const char *prefix; 
    39   struct sensors_chip_feature *feature; 
    40 } sensors_chip_features; 
    41  
    42 extern sensors_chip_features sensors_chip_features_list[]; 
    4325 
    4426/* Returns, one by one, a pointer to all sensor_chip structs of the 
     
    6850extern int sensors_substitute_busses(void); 
    6951 
     52 
     53/* Parse an i2c bus name into its components. Returns 0 on succes, a value from 
     54   error.h on failure. */ 
     55extern int sensors_parse_i2cbus_name(const char *name, int *res); 
     56 
     57/* Evaluate an expression */ 
     58extern int sensors_eval_expr(sensors_chip_name chipname, sensors_expr *expr, 
     59                             double val, double *result); 
     60 
     61 
    7062#endif /* def LIB_SENSORS_ACCESS_H */ 
  • lm-sensors/trunk/lib/chips.c

    r116 r119  
    1919 
    2020#include "chips.h" 
    21 #include "access.h" 
     21#include "data.h" 
    2222#include "sensors.h" 
    2323#include "src/sensors.h" 
  • lm-sensors/trunk/lib/conf-parse.y

    r107 r119  
    2828#include "general.h" 
    2929#include "error.h" 
     30#include "conf.h" 
    3031 
    3132/* These two functions are defined in conf-lex.l */ 
  • lm-sensors/trunk/lib/data.c

    r107 r119  
    2424#include "data.h" 
    2525#include "sensors.h" 
    26 #include "access.h" 
    2726 
    2827sensors_chip *sensors_config_chips = NULL; 
     
    202201 
    203202 
    204 int sensors_eval_expr(sensors_chip_name chipname, sensors_expr *expr, 
    205                       double val, double *result) 
    206 { 
    207   double res1,res2; 
    208   int res; 
    209   sensors_chip_feature *feature; 
    210  
    211   if (expr->kind == sensors_kind_val) { 
    212     *result = expr->data.val; 
    213     return 0; 
    214   } 
    215   if (expr->kind == sensors_kind_source) { 
    216     *result = val; 
    217     return 0; 
    218   } 
    219   if (expr->kind == sensors_kind_var) { 
    220     /* We should check the kind of variable here! */ 
    221     if (! (feature = sensors_lookup_feature_name(chipname.prefix, 
    222                                                 expr->data.var))) 
    223       return SENSORS_ERR_NO_ENTRY; 
    224     if (! (res = sensors_get_feature(chipname,feature->number,result))) 
    225       return res; 
    226     return 0; 
    227   } 
    228   if ((res = sensors_eval_expr(chipname,expr->data.subexpr.sub1,val,&res1))) 
    229     return res; 
    230   if (expr->data.subexpr.sub2 &&  
    231       (res = sensors_eval_expr(chipname,expr->data.subexpr.sub2,val,&res2))) 
    232     return res; 
    233   switch(expr->data.subexpr.op) { 
    234   case sensors_add: 
    235     *result = res1 + res2; 
    236     return 0; 
    237   case sensors_sub: 
    238     *result = res1 - res2; 
    239     return 0; 
    240   case sensors_multiply: 
    241     *result = res1 * res2; 
    242     return 0; 
    243   case sensors_divide: 
    244     if (res2 == 0.0) 
    245       return -SENSORS_ERR_DIV_ZERO; 
    246     *result = res1 / res2; 
    247     return 0; 
    248   case sensors_negate: 
    249     *result = -res1; 
    250     return 0; 
    251   } 
    252   return 0; 
    253 } 
    254  
    255203int sensors_substitute_chip(sensors_chip_name *name,int lineno) 
    256204{ 
     
    274222  } 
    275223 
    276   /* Well, if we did not find anything, j - sensors_proc_bus_count; so if 
     224  /* Well, if we did not find anything, j = sensors_proc_bus_count; so if 
    277225     we set this chip's bus number to j, it will never be matched. Good. */ 
    278226  name->bus = j; 
  • lm-sensors/trunk/lib/data.h

    r107 r119  
    2727   data. */ 
    2828 
     29/* Kinds of expression operators recognized */ 
    2930typedef enum sensors_operation {  
    3031  sensors_add, sensors_sub, sensors_multiply, sensors_divide,  
    3132  sensors_negate } sensors_operation; 
    3233 
     34/* An expression can have several forms */ 
    3335typedef enum sensors_expr_kind { 
    3436  sensors_kind_val, sensors_kind_source, sensors_kind_var,  
    3537  sensors_kind_sub } sensors_expr_kind; 
    3638 
     39/* An expression. It is either a floating point value, a variable name, 
     40   an operation on subexpressions, or the special value 'sub' } */ 
    3741struct sensors_expr; 
    3842 
     
    5155  } data; 
    5256} sensors_expr; 
    53      
    5457 
     58/* Config file label declaration: a feature name, combined with the label 
     59   value */ 
    5560typedef struct sensors_label { 
    5661  char *name; 
     
    5964} sensors_label; 
    6065 
     66/* Config file set declaration: a feature name, combined with an expression */ 
    6167typedef struct sensors_set { 
    6268  char *name; 
     
    6571} sensors_set; 
    6672 
     73/* Config file compute declaration: a feature name, combined with two  
     74   expressions */ 
    6775typedef struct sensors_compute { 
    6876  char *name; 
     
    7280} sensors_compute; 
    7381 
     82/* A list of chip names, used to represent a config file chips declaration */ 
    7483typedef struct sensors_chip_name_list { 
    7584  sensors_chip_name *fits; 
     
    7887} sensors_chip_name_list; 
    7988 
     89/* A config file chip block */ 
    8090typedef struct sensors_chip { 
    8191  sensors_chip_name_list chips; 
     
    92102} sensors_chip; 
    93103 
    94 typedef enum sensors_bus_type {sensors_i2c, sensors_isa,  
    95                                sensors_smbus } sensors_bus_type; 
    96  
     104/* Config file bus declaration: the i2c bus number, combined with adapter 
     105   and algorithm names */ 
    97106typedef struct sensors_bus { 
    98107  int number; 
     
    102111} sensors_bus; 
    103112 
     113/* /proc/sys/dev/sensors/chips line representation */ 
    104114typedef struct sensors_proc_chips_entry { 
    105115  int sysctl; 
     
    107117} sensors_proc_chips_entry; 
    108118 
     119/* Internal data about a single chip feature. 
     120   name is the string name used to refer to this feature (both in config 
     121    files and through user functions); 
     122   number is the internal feature number, used in many functions to refer 
     123     to this feature 
     124   logical_mapping is either SENSORS_NO_MAPPING is this is feature is the 
     125     main element of category; or it is the number of a feature with which 
     126     this feature is logically grouped (a group could be fan, fan_max and 
     127     fan_div) 
     128   compute_mapping is like logical_mapping, only it refers to another 
     129     feature whose compute line will be inherited (a group could be fan and 
     130     fan_max, but not fan_div) 
     131    mode is SENSORS_MODE_NO_RW, SENSORS_MODE_R, SENSORS_MODE_W or 
     132      SENSORS_MODE_RW, for unaccessible, readable, writable, and both readable 
     133      and writable. 
     134    sysctl is the SYSCTL id of the file the value can be found in; 
     135    offset is the (byte) offset of the place this feature can be found; 
     136    Divide the read value by 10**scaling to get the real value */ 
     137typedef struct sensors_chip_feature { 
     138  int number; 
     139  const char *name; 
     140  int logical_mapping; 
     141  int compute_mapping; 
     142  int mode; 
     143  int sysctl; 
     144  int offset; 
     145  int scaling; 
     146} sensors_chip_feature; 
     147 
     148/* Internal data about all features of a type of chip */ 
     149typedef struct sensors_chip_features { 
     150  const char *prefix; 
     151  struct sensors_chip_feature *feature; 
     152} sensors_chip_features; 
    109153 
    110154extern sensors_chip *sensors_config_chips; 
     
    124168extern int sensors_proc_bus_max; 
    125169 
    126 /* Parse an i2c bus name into its components. Returns 0 on succes, a value from 
    127    error.h on failure. */ 
    128 extern int sensors_parse_i2cbus_name(const char *name, int *res); 
    129  
    130 extern int sensors_eval_expr(sensors_chip_name chipname, sensors_expr *expr, 
    131                              double val, double *result); 
    132  
     170extern sensors_chip_features sensors_chip_features_list[]; 
    133171 
    134172#endif /* def LIB_SENSORS_DATA_H */ 
  • lm-sensors/trunk/lib/error.h

    r101 r119  
    4444   memory left) is detected. Give it a new value, and your own function 
    4545   is called instead of the default (which prints to stderr and ends 
    46    the program). */ 
     46   the program). Never let it return! */ 
    4747extern void (*sensors_fatal_error) (const char *proc, const char *err); 
    4848 
  • lm-sensors/trunk/lib/init.c

    r107 r119  
    2525#include "error.h" 
    2626#include "access.h" 
    27  
    28 extern int sensors_yyparse(void); 
    29 extern FILE *sensors_yyin; 
     27#include "conf.h" 
    3028 
    3129static void free_proc_chips_entry(sensors_proc_chips_entry entry);