Annotation of kernel/bsd/dev/ppc/drvApple96_SCSI/Apple96SCSIPrivate.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
        !             7:  * Reserved.  This file contains Original Code and/or Modifications of
        !             8:  * Original Code as defined in and that are subject to the Apple Public
        !             9:  * Source License Version 1.1 (the "License").  You may not use this file
        !            10:  * except in compliance with the License.  Please obtain a copy of the
        !            11:  * License at http://www.apple.com/publicsource and read it before using
        !            12:  * this file.
        !            13:  * 
        !            14:  * The Original Code and all software distributed under the License are
        !            15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            19:  * License for the specific language governing rights and limitations
        !            20:  * under the License.
        !            21:  * 
        !            22:  * @APPLE_LICENSE_HEADER_END@
        !            23:  */
        !            24: 
        !            25: /**
        !            26:  * Copyright (c) 1994-1996 NeXT Software, Inc.  All rights reserved. 
        !            27:  * Copyright 1997 Apple Computer Inc. All Rights Reserved.
        !            28:  * @author  Martin Minow    mailto:[email protected]
        !            29:  * @revision   1997.02.13  Initial conversion from AMDPCSCSIDriver sources.
        !            30:  *
        !            31:  * Private structures and definitions for Apple 53C96 SCSI driver.
        !            32:  * Apple96SCSI is closely based on Doug Mitchell's AMD 53C974/79C974 driver.
        !            33:  *
        !            34:  * Edit History
        !            35:  * 1997.02.13  MM              Initial conversion from AMDPCSCSIDriver sources. 
        !            36:  */
        !            37: 
        !            38: #import "Apple96SCSI.h"
        !            39: 
        !            40: @interface Apple96_SCSI(Private)
        !            41: 
        !            42: /*
        !            43:  * Send a command to the controller thread, and wait for its completion.
        !            44:  * Only invoked by publicly exported methods in SCSIController.m.
        !            45:  */
        !            46: - (IOReturn) executeCmdBuf
        !            47:                                                : (CommandBuffer *) cmdBuf;
        !            48: 
        !            49: /*
        !            50:  * Abort all active and disconnected commands with specified status. No 
        !            51:  * hardware action. Used by threadResetBus and during processing
        !            52:  * of a kCommandAbortRequest command.
        !            53:  */
        !            54: - (void)    abortAllCommands   : (sc_status_t) status;
        !            55: 
        !            56: /*
        !            57:  * I/O thread version of resetSCSIBus and executeRequest.
        !            58:  */
        !            59: - (void)    threadResetBus
        !            60:                                                : (const char *) reason;
        !            61:                                                
        !            62: 
        !            63: - (void)    threadExecuteRequest
        !            64:                                                : (CommandBuffer *) cmdBuf;
        !            65: 
        !            66: /*
        !            67:  * Methods called by other modules in this driver. 
        !            68:  */
        !            69:  
        !            70: /*
        !            71:  * Called when a transaction associated with cmdBuf is complete. Notify 
        !            72:  * waiting thread. If cmdBuf->scsiReq exists (i.e., this is not a reset
        !            73:  * or an abort), scsiReq->driverStatus must be valid. If cmdBuf is activeCmd,
        !            74:  * caller must remove from activeCmd.
        !            75:  *
        !            76:  * If the request status is SR_IOST_INVALID (the initial value), it will
        !            77:  * be set to finalStatus.
        !            78:  */
        !            79: - (void)    ioComplete
        !            80:            : (CommandBuffer *) cmdBuf
        !            81:        finalStatus : (sc_status_t) finalStatus;
        !            82: 
        !            83: /**
        !            84:  * A target reported a full queue. Push this command back on the pending
        !            85:  * queue and try it again, later. (Return SR_IOST_GOOD if successful,
        !            86:  * SR_IOST_BADST on failure.
        !            87:  */
        !            88: - (sc_status_t) pushbackFullTargetQueue
        !            89:                                                : (CommandBuffer *) cmdBuf;
        !            90: 
        !            91: /**
        !            92:  * A command couldn't be issued (because a target is trying to reselect
        !            93:  * us or we lost arbitration for some other reason). Push this request
        !            94:  * onto the front of the pending request queue.
        !            95:  */
        !            96: - (void) pushbackCurrentRequest
        !            97:                                                : (CommandBuffer *) cmdBuf;
        !            98: 
        !            99: /**
        !           100:  * A command can't be continued. Perhaps there is no target.
        !           101:  */
        !           102: // - (void) killCurrentRequest;
        !           103: 
        !           104: /*
        !           105:  * I/O associated with activeCmd has disconnected. Place it on disconnectQ
        !           106:  * and enable another transaction.
        !           107:  */ 
        !           108: - (void)    disconnect;
        !           109: 
        !           110: /*
        !           111:  * The current target,lun is trying to reselect. If we have a CommandBuffer
        !           112:  * for this TL nexus and it is not tagged, remove it, make it the current
        !           113:  * gActiveCommand, and return IO_R_SUCCESS. If the first disconnected
        !           114:  * command is tagged, we need to read the queue tag message, return
        !           115:  * IO_R_INTERNAL to signal this (it is not an error). If there is no
        !           116:  * disconnected command, return IO_R_HW to initiate error recovery.
        !           117:  */
        !           118: - (IOReturn)   reselectNexusWithoutTag;
        !           119: 
        !           120: /*
        !           121:  * The current target, lun, and specified queueTag is trying to reselect.
        !           122:  * If we have  a CommandBuffer for this TLQ nexus on disconnectQ, remove it,
        !           123:  * make it the current activeCmd, and return IO_R_SUCCESS. Else return IO_R_HW.
        !           124:  */
        !           125: - (IOReturn)   reselectNexusWithTag
        !           126:                                        : (unsigned char) queueTag;
        !           127: 
        !           128: /*
        !           129:  * Determine if gActiveArray[][], maxQueue[][], cmdQueueEnable, and a 
        !           130:  * command's target and lun show that it's OK to start processing cmdBuf.
        !           131:  * Returns YES if the command can be started.
        !           132:  */
        !           133: - (Boolean) commandCanBeStarted
        !           134:                                                : (CommandBuffer *) cmdBuf;
        !           135:     
        !           136: /*
        !           137:  * The bus has gone free. Start up commands in pendingQ, if any.
        !           138:  */
        !           139: - (void)    busFree;
        !           140: 
        !           141: /**
        !           142:  * Choose the next request that can be started.
        !           143:  */
        !           144: - (CommandBuffer *) selectNextRequest;
        !           145: 
        !           146: /*
        !           147:  * Abort activeCmd (if any) and any disconnected I/Os (if any) and reset 
        !           148:  * the bus due to gross hardware failure.
        !           149:  * If activeCmd is valid, its scsiReq->driverStatus will be set to 'status'.
        !           150:  */
        !           151: - (void)    killActiveCommandAndResetBus
        !           152:                                                : (sc_status_t) status
        !           153:     reason     : (const char *) reason;
        !           154: 
        !           155: - (void)    killActiveCommand
        !           156:                                                : (sc_status_t) status;
        !           157: /*
        !           158:  * Called by chip level to indicate that a command has gone out to the 
        !           159:  * hardware.
        !           160:  */
        !           161: - (void)    activateCommand
        !           162:                                                : (CommandBuffer *) cmdBuf;
        !           163: 
        !           164: /*
        !           165:  * Remove the current command from "active" status. Update activeArray,
        !           166:  * activeCount, and unschedule pending timer.
        !           167:  */
        !           168: - (void)    deactivateCmd;
        !           169: 
        !           170: /**
        !           171:  * Kill everything in the indicated queue. Called after bus reset.
        !           172:  */
        !           173: - (void) killQueue  : (queue_head_t *) queuePtr
        !           174:        finalStatus : (sc_status_t)     scsiStatus;
        !           175: 
        !           176: 
        !           177: @end
        !           178: 

unix.superglobalmegacorp.com

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