Annotation of Examples/DriverKit/Adaptec1542B/Adaptec1542B_reloc.tproj/AHAController.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1993 NeXT Computer, Inc.
                      3:  *
                      4:  * AHAController.h. - class definition for Adaptec 1542 driver.
                      5:  *
                      6:  * HISTORY
                      7:  *
                      8:  * 13 Apr 1993 Doug Mitchell at NeXT
                      9:  *     Created from Brian Pinkerton's Adaptec driver. 
                     10:  */
                     11:  
                     12: 
                     13: #import <driverkit/IODevice.h>
                     14: #import <driverkit/IODeviceDescription.h>
                     15: #import <driverkit/return.h>
                     16: #import <driverkit/scsiTypes.h>
                     17: #import <driverkit/IOSCSIController.h>
                     18: #import <driverkit/i386/directDevice.h>
                     19: #import "AHAControllerPrivate.h"
                     20: #import "AHATypes.h"
                     21: 
                     22: 
                     23: @interface AHAController : IOSCSIController 
                     24: {
                     25:        /*
                     26:         * Hardware info.
                     27:         */
                     28:        struct aha_config       config;         /* config info from device */
                     29:        IOEISAPortAddress       ioBase;         /* base IO port addr */
                     30:        unsigned char           ahaBoardId;
                     31:        BOOL                    ioThreadRunning;
                     32:        
                     33:        /*
                     34:         * mailbox and CCB areas. Dynamically allocated from low 
                     35:         * 16 MB of memory.
                     36:         */  
                     37:        struct aha_mb_area      *ahaMbArea;
                     38:        struct ccb              *ahaCcb;
                     39:        int                     numFreeCcbs;    /* number of free CCBs */
                     40: 
                     41:        /*
                     42:         * Three queues:
                     43:         * 
                     44:         * commandQ:     contains AHACommandBuf's to be executed by the 
                     45:         *               I/O thread. Enqueued by exported methods (via
                     46:         *               -executeCmdBuf); dequeued by the I/O thread in
                     47:         *               -commandRequestOccurred.
                     48:         *
                     49:         * outstandingQ: contains ccb's on which the controller is
                     50:         *               currently operating. The number of ccb's in
                     51:         *               outstandingQ is outstandingCount. Ccb's are 
                     52:         *               enqueued here by -runPendingCommands. 
                     53:         *
                     54:         * pendingQ:     contains ccb's which the I/O thread is holding
                     55:         *               on to because outstandingCount == AHA_QUEUE_SIZE.
                     56:         *               Ccb's are enqueued here by -threadExecuteRequest:.
                     57:         *
                     58:         */
                     59:        queue_head_t    commandQ;               /* list of waiting
                     60:                                                 * AHACommandBuf's */
                     61:        id              commandLock;            /* NXLock; protects commandQ */
                     62:        queue_head_t    outstandingQ;           /* list of running cmds */
                     63:        unsigned int    outstandingCount;       /* length of outstandingQ */
                     64:        queue_head_t    pendingQ;
                     65:        
                     66:        /*
                     67:         * Local reference count for reserveDMALock.
                     68:         */ 
                     69:        unsigned        dmaLockCount;           
                     70:        
                     71:        /*
                     72:         * Statistics counters.
                     73:         */ 
                     74:        unsigned int    maxQueueLen;
                     75:        unsigned int    queueLenTotal;
                     76:        unsigned int    totalCommands;
                     77:        
                     78:        port_t          interruptPortKern;      /* kernel version of 
                     79:                                                 * interruptPort */
                     80: }
                     81: 
                     82: /*
                     83:  * Standard IODirectDevice methods overridden here.
                     84:  */
                     85: + (BOOL)probe:deviceDescription;
                     86: - initFromDeviceDescription    : deviceDescription;
                     87: - (unsigned)maxTransfer;
                     88: - free;
                     89: - (void)interruptOccurred;     
                     90: - (void)interruptOccurredAt:(int)localNum;
                     91: - (void)otherOccurred:(int)id;
                     92: - (void)receiveMsg;
                     93: - (void)timeoutOccurred;
                     94: - (void)commandRequestOccurred;
                     95: 
                     96: /*
                     97:  * IOSCSIControllerExported methods implemented here.
                     98:  */
                     99: - (sc_status_t) executeRequest         : (IOSCSIRequest *)scsiReq 
                    100:                         buffer : (void *)buffer 
                    101:                         client : (vm_task_t)client;
                    102: - (sc_status_t)resetSCSIBus;
                    103: 
                    104: @end
                    105: 
                    106: 

unix.superglobalmegacorp.com

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