Annotation of linux/kernel/blk_drv/scsi/hosts.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     hosts.c Copyright (C) 1992 Drew Eckhardt 
                      3:  *     mid to lowlevel SCSI driver interface by
                      4:  *             Drew Eckhardt 
                      5:  *
                      6:  *     <[email protected]>
                      7:  */
                      8: 
                      9: 
                     10: /*
                     11:        This file contains the medium level SCSI
                     12:        host interface initialization, as well as the scsi_hosts array of SCSI
                     13:        hosts currently present in the system. 
                     14: */
                     15: 
                     16: #include <linux/config.h>
                     17: 
                     18: #ifdef CONFIG_SCSI
                     19: #include <linux/kernel.h>
                     20: #include "scsi.h"
                     21: 
                     22: #ifndef NULL 
                     23:        #define NULL 0L
                     24: #endif
                     25: 
                     26: #ifdef FIGURE_MAX_SCSI_HOSTS
                     27:        #define MAX_SCSI_HOSTS
                     28: #endif
                     29: 
                     30: #include "hosts.h"
                     31: 
                     32: #ifdef CONFIG_SCSI_AHA1542
                     33: #include "aha1542.h"
                     34: #endif
                     35: 
                     36: #ifdef CONFIG_SCSI_SEAGATE
                     37: #include "seagate.h"
                     38: #endif
                     39: 
                     40: #ifdef CONFIG_SCSI_ULTRASTOR
                     41: #include "ultrastor.h"
                     42: #endif
                     43: 
                     44: /*
                     45: static const char RCSid[] = "$Header: /usr/src/linux/kernel/blk_drv/scsi/RCS/hosts.c,v 1.1 1992/04/24 18:01:50 root Exp root $";
                     46: */
                     47: 
                     48: /*
                     49:        The scsi host entries should be in the order you wish the 
                     50:        cards to be detected.  A driver may appear more than once IFF
                     51:        it can deal with being detected (and therefore initialized) 
                     52:        with more than one simulatenous host number, can handle being
                     53:        rentrant, etc.
                     54: 
                     55:        They may appear in any order, as each SCSI host  is told which host number it is
                     56:        during detection.
                     57: */
                     58: 
                     59: /*
                     60:        When figure is run, we don't want to link to any object code.  Since 
                     61:        the macro for each host will contain function pointers, we cannot 
                     62:        use it and instead must use a "blank" that does no such 
                     63:        idiocy.
                     64: */
                     65: 
                     66: #ifdef FIGURE_MAX_SCSI_HOSTS
                     67:        #define BLANKIFY(what) BLANK_HOST
                     68: #else
                     69:        #define BLANKIFY(what) what
                     70: #endif
                     71: 
                     72: Scsi_Host scsi_hosts[] =
                     73:        {
                     74: #ifdef CONFIG_SCSI_AHA1542
                     75:        BLANKIFY(AHA1542),
                     76: #endif
                     77: 
                     78: #ifdef CONFIG_SCSI_SEAGATE
                     79:        BLANKIFY(SEAGATE_ST0X),
                     80: #endif
                     81: #ifdef CONFIG_SCSI_ULTRASTOR
                     82:        BLANKIFY(ULTRASTOR_14F),
                     83: #endif
                     84:        };
                     85: 
                     86: #ifdef FIGURE_MAX_SCSI_HOSTS
                     87:        #undef MAX_SCSI_HOSTS
                     88:        #define  MAX_SCSI_HOSTS  (sizeof(scsi_hosts) / sizeof(Scsi_Host))
                     89: #endif
                     90: 
                     91: #ifdef FIGURE_MAX_SCSI_HOSTS
                     92: #include <stdio.h>
                     93: void main (void)
                     94: {
                     95:        printf("%d", MAX_SCSI_HOSTS);
                     96: }
                     97: #else
                     98: /*
                     99:        Our semaphores and timeout counters, where size depends on MAX_SCSI_HOSTS here. 
                    100: */
                    101: 
                    102: volatile unsigned char host_busy[MAX_SCSI_HOSTS];
                    103: volatile int host_timeout[MAX_SCSI_HOSTS];
                    104: volatile Scsi_Cmnd *host_queue[MAX_SCSI_HOSTS]; 
                    105: /*
                    106:        scsi_init initializes the scsi hosts. 
                    107: */
                    108: 
                    109: void scsi_init(void)
                    110:        {
                    111:        static int called = 0;
                    112:        int i, count;   
                    113:        if (!called)
                    114:                {
                    115:                called = 1;     
                    116:                for (count = i = 0; i < MAX_SCSI_HOSTS; ++i)
                    117:                        {
                    118:                        /*
                    119:                                Initialize our semaphores.  -1 is interpreted to mean 
                    120:                                "inactive" - where as 0 will indicate a time out condition.
                    121:                        */ 
                    122: 
                    123:                        host_busy[i] = 0;
                    124:                        host_timeout[i] = 0;
                    125:                        host_queue[i] = NULL;   
                    126:                        
                    127:                        if ((scsi_hosts[i].detect) &&  (scsi_hosts[i].present = scsi_hosts[i].detect(i)))
                    128:                                        {               
                    129:                                        printk ("Host %d is detected as a(n) %s.\n\r",
                    130:                                                count, scsi_hosts[i].name);
                    131:                                        printk ("%s", scsi_hosts[i].info());
                    132:                                        ++count;
                    133:                                        }
                    134:                        }
                    135:                printk ("%d host adapters detected. \n\r", count);
                    136:                }
                    137: 
                    138:        }
                    139: 
                    140: #endif
                    141: 
                    142: #endif 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.