Changeset 107
- Timestamp:
- 12/24/98 02:13:44 (10 years ago)
- Files:
-
- lm-sensors/trunk/etc/sensors.conf.eg (modified) (3 diffs)
- lm-sensors/trunk/lib/access.c (modified) (2 diffs)
- lm-sensors/trunk/lib/conf-lex.l (modified) (1 diff)
- lm-sensors/trunk/lib/conf-parse.y (modified) (1 diff)
- lm-sensors/trunk/lib/data.c (modified) (3 diffs)
- lm-sensors/trunk/lib/data.h (modified) (2 diffs)
- lm-sensors/trunk/lib/init.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lm-sensors/trunk/etc/sensors.conf.eg
r106 r107 47 47 # two expressions in it: the first describes how the /proc value must 48 48 # be translated to a user value, the second how a user value must be 49 # translated to a /proc value. 'val' is the value to operate on. 49 # translated to a /proc value. '@' is the value to operate on. You may 50 # refer to other readable features (like '2 * vid'). 50 51 51 52 # Like for the label statement, there are logical groups here. They are … … 70 71 71 72 # These would lead to these declarations: 72 # compute in3 ((6.8/10)+1)* val , val/((6.8/10)+1)73 # compute in4 ((30/10)+1)* val , val/((30/10)+1)74 # compute in5 -(240/60)* val , -val/(240/60)75 # compute in6 -(100/60)* val , -val/(100/60)73 # compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1) 74 # compute in4 ((30/10)+1)*@ , @/((30/10)+1) 75 # compute in5 -(240/60)*@ , -@/(240/60) 76 # compute in6 -(100/60)*@ , -@/(100/60) 76 77 77 78 # On almost any mainboard we have seen, the Winbond compute values lead to … … 84 85 85 86 # These leads to these declarations: 86 compute in3 ((6.8/10)+1)* val , val/((6.8/10)+1)87 compute in4 ((28/10)+1)* val , val/((28/10)+1)88 compute in5 -(210/60.4)* val , -val/(210/60.4)89 compute in6 -(90.9/60.4)* val , -val/(90.9/60.4)87 compute in3 ((6.8/10)+1)*@ , @/((6.8/10)+1) 88 compute in4 ((28/10)+1)*@ , @/((28/10)+1) 89 compute in5 -(210/60.4)*@ , -@/(210/60.4) 90 compute in6 -(90.9/60.4)*@ , -@/(90.9/60.4) 90 91 91 92 # Set statements set things like limits. Complete expressions can be lm-sensors/trunk/lib/access.c
r105 r107 188 188 if (! expr) 189 189 *result = val; 190 else if ((res = sensors_eval_expr( expr,val,result)))190 else if ((res = sensors_eval_expr(name,expr,val,result))) 191 191 return res; 192 192 return 0; … … 214 214 expr = chip->computes->to_proc; 215 215 if (expr) 216 if ((res = sensors_eval_expr( expr,value,&value)))216 if ((res = sensors_eval_expr(name,expr,value,&value))) 217 217 return res; 218 218 if (sensors_write_proc(name,feature,value)) lm-sensors/trunk/lib/conf-lex.l
r98 r107 171 171 return ','; 172 172 } 173 <MIDDLE>"@" { 174 return '@'; 175 } 173 176 174 177 /* Quoted string */ lm-sensors/trunk/lib/conf-parse.y
r101 r107 212 212 $$->kind = sensors_kind_var; 213 213 } 214 | '@' 215 { $$ = malloc_expr(); 216 $$->kind = sensors_kind_source; 217 } 214 218 | expression '+' expression 215 219 { $$ = malloc_expr(); lm-sensors/trunk/lib/data.c
r101 r107 24 24 #include "data.h" 25 25 #include "sensors.h" 26 #include "access.h" 26 27 27 28 sensors_chip *sensors_config_chips = NULL; … … 201 202 202 203 203 int sensors_eval_expr(sensors_expr *expr, double val, double *result) 204 int sensors_eval_expr(sensors_chip_name chipname, sensors_expr *expr, 205 double val, double *result) 204 206 { 205 207 double res1,res2; 206 208 int res; 209 sensors_chip_feature *feature; 207 210 208 211 if (expr->kind == sensors_kind_val) { … … 210 213 return 0; 211 214 } 215 if (expr->kind == sensors_kind_source) { 216 *result = val; 217 return 0; 218 } 212 219 if (expr->kind == sensors_kind_var) { 213 220 /* We should check the kind of variable here! */ 214 *result = val; 215 return 0; 216 } 217 if ((res = sensors_eval_expr(expr->data.subexpr.sub1,val,&res1))) 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))) 218 229 return res; 219 230 if (expr->data.subexpr.sub2 && 220 (res = sensors_eval_expr( expr->data.subexpr.sub2,val,&res2)))231 (res = sensors_eval_expr(chipname,expr->data.subexpr.sub2,val,&res2))) 221 232 return res; 222 233 switch(expr->data.subexpr.op) { lm-sensors/trunk/lib/data.h
r99 r107 32 32 33 33 typedef enum sensors_expr_kind { 34 sensors_kind_val, sensors_kind_var, sensors_kind_sub } sensors_expr_kind; 34 sensors_kind_val, sensors_kind_source, sensors_kind_var, 35 sensors_kind_sub } sensors_expr_kind; 35 36 36 37 struct sensors_expr; … … 127 128 extern int sensors_parse_i2cbus_name(const char *name, int *res); 128 129 129 extern int sensors_eval_expr(sensors_expr *expr, double val, double *result); 130 extern int sensors_eval_expr(sensors_chip_name chipname, sensors_expr *expr, 131 double val, double *result); 130 132 131 133 lm-sensors/trunk/lib/init.c
r101 r107 24 24 #include "proc.h" 25 25 #include "error.h" 26 #include "access.h" 26 27 27 28 extern int sensors_yyparse(void);
