Annotation of Examples/DriverKit/AMDPCSCSIDriver/AMDPCSCSIDriver_reloc.tproj/AMD_Private.h, revision 1.1

1.1     ! root        1: /*     Copyright (c) 1994 NeXT Computer, Inc.  All rights reserved. 
        !             2:  *
        !             3:  * AMD_SCSI.h - hardware-independent methods for AMD PCI SCSI driver.
        !             4:  *
        !             5:  * These methods are implemented in AMD_SCSI.m.
        !             6:  *
        !             7:  * HISTORY
        !             8:  * 21 Oct 94    Doug Mitchell at NeXT
        !             9:  *      Created. 
        !            10:  */
        !            11:  
        !            12: #import "AMD_SCSI.h"
        !            13: #import "AMD_Types.h"
        !            14: 
        !            15: @interface AMD_SCSI(Private)
        !            16: 
        !            17: /*
        !            18:  * Send a command to the controller thread, and wait for its completion.
        !            19:  * Only invoked by publicly exported methods in SCSIController.m.
        !            20:  */
        !            21: - (IOReturn)executeCmdBuf      : (commandBuf *)cmdBuf;
        !            22: 
        !            23: /*
        !            24:  * Abort all active and disconnected commands with specified status. No 
        !            25:  * hardware action. Currently used by threadResetBus and during processing
        !            26:  * of a CO_Abort command.
        !            27:  */
        !            28: - (void)swAbort : (sc_status_t)status;
        !            29: 
        !            30: /*
        !            31:  * I/O thread version of resetSCSIBus and executeRequest.
        !            32:  */
        !            33: - (void)threadResetBus                 : (const char *)reason;
        !            34: - (void)threadExecuteRequest   : (commandBuf *)cmdBuf;
        !            35: 
        !            36: /*
        !            37:  * Methods called by other modules in this driver. 
        !            38:  */
        !            39:  
        !            40: /*
        !            41:  * Called when a transaction associated with cmdBuf is complete. Notify 
        !            42:  * waiting thread. If cmdBuf->scsiReq exists (i.e., this is not a reset
        !            43:  * or an abort), scsiReq->driverStatus must be valid. If cmdBuf is activeCmd,
        !            44:  * caller must remove from activeCmd.
        !            45:  */
        !            46: - (void)ioComplete             : (commandBuf *)cmdBuf;
        !            47: 
        !            48: /*
        !            49:  * Generate autosense request for specified cmdBuf, place it 
        !            50:  * at head of pendingQ.
        !            51:  */
        !            52: - (void)generateAutoSense : (commandBuf *)cmdBuf;
        !            53: 
        !            54: /*
        !            55:  * I/O associated with activeCmd has disconnected. Place it on disconnectQ
        !            56:  * and enable another transaction.
        !            57:  */ 
        !            58: - (void)disconnect;
        !            59: 
        !            60: /*
        !            61:  * Specified target, lun, and queueTag is trying to reselect. If we have 
        !            62:  * a commandBuf for this TLQ nexus on disconnectQ, remove it, make it the
        !            63:  * current activeCmd, and return YES. Else return NO.
        !            64:  * A value of zero for queueTag indicates a nontagged command (zero is never
        !            65:  * used as the queue tag value for a tagged command).
        !            66:  */
        !            67: - (BOOL)reselect               : (unsigned char)target_id
        !            68:                            lun : (unsigned char)lun
        !            69:                       queueTag : (unsigned char)queueTag;
        !            70: 
        !            71: /*
        !            72:  * Determine if activeArray[][], maxQueue[][], cmdQueueEnable, and a 
        !            73:  * command's target and lun show that it's OK to start processing cmdBuf.
        !            74:  * Returns YES if copacetic.
        !            75:  */
        !            76: - (BOOL)cmdBufOK : (commandBuf *)cmdBuf;
        !            77:            
        !            78: /*
        !            79:  * The bus has gone free. Start up commands in pendingQ, if any.
        !            80:  */
        !            81: - (void)busFree;
        !            82: 
        !            83: /*
        !            84:  * Abort activeCmd (if any) and any disconnected I/Os (if any) and reset 
        !            85:  * the bus due to gross hardware failure.
        !            86:  * If activeCmd is valid, its scsiReq->driverStatus will be set to 'status'.
        !            87:  */
        !            88: - (void)hwAbort                : (sc_status_t)status
        !            89:                         reason : (const char *)reason;
        !            90: 
        !            91: /*
        !            92:  * Called by chip level to indicate that a command has gone out to the 
        !            93:  * hardware.
        !            94:  */
        !            95: - (void)activateCommand : (commandBuf *)cmdBuf;
        !            96: 
        !            97: /*
        !            98:  * Remove specified cmdBuf from "active" status. Update activeArray,
        !            99:  * activeCount, and unschedule pending timer.
        !           100:  */
        !           101: - (void)deactivateCmd : (commandBuf *)cmdBuf;
        !           102: 
        !           103: @end
        !           104: 

unix.superglobalmegacorp.com

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