root/drivers/scsi/scsi_module.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. init_module
  2. cleanup_module

   1 /*
   2  *  scsi_module.c Copyright (1994, 1995) Eric Youngdale.
   3  *
   4  * Support for loading low-level scsi drivers using the linux kernel loadable
   5  * module interface.
   6  *
   7  * To use, the host adapter should first define and initialize the variable
   8  * driver_template (datatype Scsi_Host_Template), and then include this file.
   9  * This should also be wrapped in a #ifdef MODULE/#endif.
  10  *
  11  * The low -level driver must also define a release function which will
  12  * free any irq assignments, release any dma channels, release any I/O
  13  * address space that might be reserved, and otherwise clean up after itself.
  14  * The idea is that the same driver should be able to be reloaded without
  15  * any difficulty.  This makes debugging new drivers easier, as you should
  16  * be able to load the driver, test it, unload, modify and reload.
  17  *
  18  * One *very* important caveat.  If the driver may need to do DMA on the
  19  * ISA bus, you must have unchecked_isa_dma set in the device template,
  20  * even if this might be changed during the detect routine.  This is
  21  * because the shpnt structure will be allocated in a special way so that
  22  * it will be below the appropriate DMA limit - thus if your driver uses
  23  * the hostdata field of shpnt, and the board must be able to access this
  24  * via DMA, the shpnt structure must be in a DMA accessible region of
  25  * memory.  This comment would be relevant for something like the buslogic
  26  * driver where there are many boards, only some of which do DMA onto the
  27  * ISA bus.  There is no convenient way of specifying whether the host
  28  * needs to be in a ISA DMA accessible region of memory when you call
  29  * scsi_register.
  30  */
  31 
  32 #include <linux/module.h>
  33 #include <linux/version.h>
  34 
  35 char kernel_version[] = UTS_RELEASE;
  36 
  37 int init_module(void) {
     /* [previous][next][first][last][top][bottom][index][help] */
  38     driver_template.usage_count = &mod_use_count_;
  39     scsi_register_module(MODULE_SCSI_HA, &driver_template);
  40     return (driver_template.present == 0);
  41 }
  42 
  43 void cleanup_module( void) {
     /* [previous][next][first][last][top][bottom][index][help] */
  44     if (MOD_IN_USE) {
  45         printk(KERN_INFO __FILE__ ": module is in use, remove rejected\n");
  46         return;
  47     }
  48     scsi_unregister_module(MODULE_SCSI_HA, &driver_template);
  49 }
  50 
  51 /*
  52  * Overrides for Emacs so that we almost follow Linus's tabbing style.
  53  * Emacs will notice this stuff at the end of the file and automatically
  54  * adjust the settings for this buffer only.  This must remain at the end
  55  * of the file.
  56  * ---------------------------------------------------------------------------
  57  * Local variables:
  58  * c-indent-level: 4
  59  * c-brace-imaginary-offset: 0
  60  * c-brace-offset: -4
  61  * c-argdecl-indent: 4
  62  * c-label-offset: -4
  63  * c-continued-statement-offset: 4
  64  * c-continued-brace-offset: 0
  65  * indent-tabs-mode: nil
  66  * tab-width: 8
  67  * End:
  68  */

/* [previous][next][first][last][top][bottom][index][help] */