Annotation of XNU/iokit/Families/IOATABus/IOATACommand.cpp, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * The contents of this file constitute Original Code as defined in and
                      7:  * are subject to the Apple Public Source License Version 1.1 (the
                      8:  * "License").  You may not use this file except in compliance with the
                      9:  * License.  Please obtain a copy of the License at
                     10:  * http://www.apple.com/publicsource and read it before using this file.
                     11:  * 
                     12:  * This Original Code and all software distributed under the License are
                     13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     17:  * License for the specific language governing rights and limitations
                     18:  * under the License.
                     19:  * 
                     20:  * @APPLE_LICENSE_HEADER_END@
                     21:  */
                     22: /*
                     23:  *
                     24:  * IOATACommand.cpp
                     25:  *
                     26:  */
                     27: 
                     28: #include <IOKit/ata/IOATA.h>
                     29: #include <IOKit/ata/IOATAController.h>
                     30: 
                     31: #undef super
                     32: #define super OSObject
                     33: 
                     34: OSDefineMetaClassAndStructors( IOATACommand, OSObject ) 
                     35: 
                     36: IOATADevice *IOATACommand::getDevice()
                     37: {
                     38:     return device;
                     39: }
                     40: 
                     41: IOCommandQueue *IOATACommand::getDeviceQueue()
                     42: {
                     43:     return deviceQueue;
                     44: }
                     45: 
                     46: IOATAController *IOATACommand::getController()
                     47: {
                     48:     return controller;
                     49: }
                     50: 
                     51: void *IOATACommand::getClientData()
                     52: {
                     53:     return clientData;
                     54: }
                     55: 
                     56: void *IOATACommand::getControllerData()
                     57: {
                     58:     return controllerData;
                     59: }
                     60: 
                     61: void IOATACommand::setTaskfile( ATATaskfile *srcTaskfile )
                     62: {
                     63:     taskfile  = *srcTaskfile;
                     64:     flags    |= atacmdTaskfileValid;
                     65: }
                     66: 
                     67: void IOATACommand::getTaskfile( ATATaskfile *dstTaskfile )
                     68: {
                     69:     *dstTaskfile = taskfile;
                     70: }
                     71: 
                     72: ATAProtocol IOATACommand::getProtocol()
                     73: {
                     74:     return taskfile.protocol;
                     75: }
                     76: 
                     77: UInt32 IOATACommand::getResultMask()
                     78: {
                     79:     return taskfile.resultmask;
                     80: }
                     81: 
                     82: void IOATACommand::setTimeout( UInt32 timeoutMS )
                     83: {
                     84:     timeout = timeoutMS;
                     85: }
                     86: 
                     87: UInt32 IOATACommand::getTimeout()
                     88: {
                     89:     return timeout;
                     90: }
                     91: 
                     92: 
                     93: void IOATACommand::setResults( ATAResults *srcResults )
                     94: {
                     95:     results   = *srcResults;
                     96: 
                     97:     flags    |= atacmdResultsValid;
                     98: }
                     99: 
                    100: ATAReturnCode IOATACommand::getResults( ATAResults *dstResults )
                    101: {
                    102:     *dstResults = results;
                    103:     return results.returnCode;
                    104: }
                    105: 
                    106: void IOATACommand::setPointers(  IOMemoryDescriptor *clientDesc, UInt32 transferCount, bool isWrite  )
                    107: {
                    108:     xferDesc       = clientDesc;
                    109:     xferCount      = transferCount;
                    110:     xferDirection  = isWrite;
                    111: 
                    112:     flags    |= atacmdPointersValid;    
                    113: }
                    114: 
                    115: void IOATACommand::getPointers(  IOMemoryDescriptor **clientDesc, UInt32 *transferCount, bool *isWrite  )
                    116: {
                    117:     if ( clientDesc != NULL )
                    118:     {
                    119:         *clientDesc = xferDesc;
                    120:     }
                    121:     
                    122:     if ( transferCount != NULL )
                    123:     {
                    124:         *transferCount = xferCount;
                    125:     }
                    126:  
                    127:     if ( isWrite != NULL )
                    128:     {
                    129:         *isWrite       = xferDirection;
                    130:     }
                    131: }
                    132: 
                    133: void IOATACommand::setATAPICmd( ATAPICmd *clientATAPICmd, IOMemoryDescriptor *clientSenseData, UInt32 clientSenseLength  )     
                    134: {
                    135:     atapiCmd    = *clientATAPICmd;
                    136:     senseLength = clientSenseLength;
                    137:     senseData   = clientSenseData;
                    138: 
                    139:     flags      |= atacmdATAPIInfoValid;
                    140: }
                    141: 
                    142: void IOATACommand::getATAPICmd( ATAPICmd *clientATAPICmd, IOMemoryDescriptor **clientSenseData, UInt32 *clientSenseLength )    
                    143: {
                    144:     if ( clientATAPICmd != NULL )
                    145:     {
                    146:         *clientATAPICmd = atapiCmd;
                    147:     }
                    148: 
                    149:     if ( clientSenseLength != NULL )
                    150:     {
                    151:         *clientSenseLength = senseLength;
                    152:     }
                    153: 
                    154:     if ( clientSenseData != NULL )
                    155:     {
                    156:         *clientSenseData = senseData;
                    157:     }
                    158: }
                    159: 
                    160: void IOATACommand::setCallback( void *clientTarget, ATACallback clientATADoneFn, void *clientRefcon )
                    161: {
                    162:     if ( clientATADoneFn == NULL )
                    163:     {
                    164:         flags &= ~atacmdCallbackValid;
                    165:     }
                    166:     else
                    167:     {
                    168:         completionInfo.async.target    = clientTarget;
                    169:         completionInfo.async.ataDoneFn = clientATADoneFn;
                    170:         completionInfo.async.refcon    = clientRefcon;
                    171: 
                    172:         flags      |= atacmdCallbackValid;
                    173:     }
                    174: }
                    175: 
                    176: bool IOATACommand::execute()
                    177: {
                    178:     return device->executeCommand( this );
                    179: }
                    180: 
                    181: void IOATACommand::complete()
                    182: {
                    183:     device->completeCommand( this );
                    184: }
                    185: 
                    186: void IOATACommand::clear()
                    187: {
                    188:     if ( dataSize )
                    189:     {
                    190:         bzero( dataArea, dataSize );
                    191:     }
                    192:       
                    193:    flags = 0;
                    194: }
                    195: 
                    196: void IOATACommand::setController( IOATAController *ctlr )
                    197: {
                    198:     controller = ctlr;
                    199: }
                    200: 
                    201: void IOATACommand::setDevice( IOATADevice *dev )
                    202: {
                    203:     device = dev;
                    204: }
                    205:     

unix.superglobalmegacorp.com

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