Changeset 360

Show
Ignore:
Timestamp:
04/04/99 22:56:30 (14 years ago)
Author:
frodo
Message:

Redid the macro trickery to define module parameters automatically.

This new version also creates MODULE_PARM_DESC entries, which describe
what each parameter is used for.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/trunk/kernel/include/sensors.h

    r335 r360  
    179179                          SENSORS_I2C_END, SENSORS_I2C_END, SENSORS_I2C_END} 
    180180 
     181/* This is ugly. We need to evaluate SENSORS_MAX_OPTS before it is  
     182   stringified */ 
    181183#define SENSORS_MODPARM_AUX1(x) "1-" #x "h" 
    182184#define SENSORS_MODPARM_AUX(x) SENSORS_MODPARM_AUX1(x) 
    183185#define SENSORS_MODPARM SENSORS_MODPARM_AUX(SENSORS_MAX_OPTS) 
    184186 
    185 #define SENSORS_CONCAT(x,y) x ## y 
    186 #define MODULE_PARM1(x,y) MODULE_PARM(x,y) 
     187/* SENSORS_MODULE_PARM creates a module parameter, and puts it in the 
     188   module header */ 
     189#define SENSORS_MODULE_PARM(var,desc) \ 
     190  static unsigned short var[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
     191  MODULE_PARM(var,SENSORS_MODPARM); \ 
     192  MODULE_PARM_DESC(var,desc) 
     193 
     194/* SENSORS_MODULE_PARM creates a 'force_*' module parameter, and puts it in 
     195   the module header */ 
     196#define SENSORS_MODULE_PARM_FORCE(name) \ 
     197  SENSORS_MODULE_PARM(force_ ## name, \ 
     198                      "List of adapter,address pairs which are unquestionably" \ 
     199                      " assumed to contain a `" # name "' chip") 
     200                          
    187201 
    188202/* This defines several insmod variables, and the addr_data structure */ 
    189203#define SENSORS_INSMOD \ 
    190   MODULE_PARM(probe,SENSORS_MODPARM); \ 
    191   static unsigned short probe[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    192   MODULE_PARM(probe_range,SENSORS_MODPARM); \ 
    193   static unsigned short probe_range[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    194   MODULE_PARM(ignore,SENSORS_MODPARM); \ 
    195   static unsigned short ignore[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    196   MODULE_PARM(ignore_range,SENSORS_MODPARM); \ 
    197   static unsigned short ignore_range [SENSORS_MAX_OPTS]  = SENSORS_DEFAULTS; \ 
     204  SENSORS_MODULE_PARM(probe, \ 
     205                      "List of adapter,address pairs to scan additionally"); \ 
     206  SENSORS_MODULE_PARM(probe_range, \ 
     207                      "List of adapter,start-addr,end-addr triples to scan " \ 
     208                      "additionally"); \ 
     209  SENSORS_MODULE_PARM(ignore, \ 
     210                      "List of adapter,address pairs not to scan"); \ 
     211  SENSORS_MODULE_PARM(ignore_range, \ 
     212                      "List of adapter,start-addr,end-addr triples not to " \ 
     213                      "scan"); \ 
    198214  static struct sensors_address_data addr_data = \ 
    199215                                       {normal_i2c, normal_i2c_range, \ 
     
    203219                                        forces} 
    204220 
    205 /* The following functions assume the existence of an enum with the chip 
    206    names as elements. The first element of the enum should be any_chip */ 
     221/* The following functions create an enum with the chip names as elements.  
     222   The first element of the enum is any_chip. These are the only macros 
     223   a module will want to use. */ 
    207224 
    208225#define SENSORS_INSMOD_0 \ 
    209226  enum chips { any_chip }; \ 
    210   MODULE_PARM(force,SENSORS_MODPARM); \ 
    211   static unsigned short force[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
     227  SENSORS_MODULE_PARM(force, \ 
     228                      "List of adapter,address pairs to boldly assume " \ 
     229                      "to be present"); \ 
    212230  static struct sensors_force_data forces[] = {{force,any_chip},{NULL}}; \ 
    213231  SENSORS_INSMOD 
     
    215233#define SENSORS_INSMOD_1(chip1) \ 
    216234  enum chips { any_chip, chip1 }; \ 
    217   MODULE_PARM(force,SENSORS_MODPARM); \ 
    218   static unsigned short force[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    219   MODULE_PARM1(SENSORS_CONCAT(force_,chip1),SENSORS_MODPARM); \ 
    220   static unsigned short force_ ## chip1 [SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
     235  SENSORS_MODULE_PARM(force, \ 
     236                      "List of adapter,address pairs to boldly assume " \ 
     237                      "to be present"); \ 
     238  SENSORS_MODULE_PARM_FORCE(chip1); \ 
    221239  static struct sensors_force_data forces[] = {{force,any_chip},\ 
    222240                                                 {force_ ## chip1,chip1}, \ 
     
    226244#define SENSORS_INSMOD_2(chip1,chip2) \ 
    227245  enum chips { any_chip, chip1, chip2 }; \ 
    228   MODULE_PARM(force,SENSORS_MODPARM); \ 
    229   static unsigned short force[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    230   MODULE_PARM1(SENSORS_CONCAT(force_,chip1),SENSORS_MODPARM); \ 
    231   static unsigned short force_ ## chip1 [SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    232   MODULE_PARM1(SENSORS_CONCAT(force_,chip2),SENSORS_MODPARM); \ 
    233   static unsigned short force_ ## chip2 [SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
     246  SENSORS_MODULE_PARM(force, \ 
     247                      "List of adapter,address pairs to boldly assume " \ 
     248                      "to be present"); \ 
     249  SENSORS_MODULE_PARM_FORCE(chip1); \ 
     250  SENSORS_MODULE_PARM_FORCE(chip2); \ 
    234251  static struct sensors_force_data forces[] = {{force,any_chip}, \ 
    235                                                  {force_ ## chip1,chip2}, \ 
    236                                                  {force_ ## chip2,nr2}, \ 
     252                                                 {force_ ## chip1,chip1}, \ 
     253                                                 {force_ ## chip2,chip2}, \ 
    237254                                                 {NULL}}; \ 
    238255  SENSORS_INSMOD 
     
    240257#define SENSORS_INSMOD_3(chip1,chip2,chip3) \ 
    241258  enum chips { any_chip, chip1, chip2, chip3 }; \ 
    242   MODULE_PARM(force,SENSORS_MODPARM); \ 
    243   static unsigned short force[SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    244   MODULE_PARM1(SENSORS_CONCAT(force_,chip1),SENSORS_MODPARM); \ 
    245   static unsigned short force_ ## chip1 [SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    246   MODULE_PARM1(SENSORS_CONCAT(force_,chip2),SENSORS_MODPARM); \ 
    247   static unsigned short force_ ## chip2 [SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
    248   MODULE_PARM1(SENSORS_CONCAT(force_,chip3),SENSORS_MODPARM); \ 
    249   static unsigned short force_ ## chip3 [SENSORS_MAX_OPTS] = SENSORS_DEFAULTS; \ 
     259  SENSORS_MODULE_PARM(force, \ 
     260                      "List of adapter,address pairs to boldly assume " \ 
     261                      "to be present"); \ 
     262  SENSORS_MODULE_PARM_FORCE(chip1); \ 
     263  SENSORS_MODULE_PARM_FORCE(chip2); \ 
     264  SENSORS_MODULE_PARM_FORCE(chip3); \ 
    250265  static struct sensors_force_data forces[] = {{force,any_chip}, \ 
    251266                                                 {force_ ## chip1,chip1}, \