Annotation of kernel/bsd/dev/ppc/drvApple96_SCSI/Apple96DDM.h, revision 1.1.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:  * Set tabs every 4 characters.
                     32:  *
                     33:  * DDM macros for Apple 53C96 SCSI driver.
                     34:  * Apple96SCSI is closely based on Doug Mitchell's AMD 53C974/79C974 driver.
                     35:  *
                     36:  * Edit History
                     37:  * 1997.02.13  MM              Initial conversion from AMDPCSCSIDriver sources. 
                     38:  * 1997.03.24  MM              Normalize Apple96DDM.h and AppleMeshDDM.h.
                     39:  */
                     40:  
                     41: #import <driverkit/debugging.h>
                     42: // #import <kernserv/ns_timer.h>
                     43: #import "Timestamp.h"
                     44: 
                     45: /*
                     46:  * The index into IODDMMasks[].
                     47:  */
                     48: #define APPLE96_DDM_INDEX      2
                     49: 
                     50: #define DDM_EXPORTED   0x00000001                      // exported methods
                     51: #define DDM_IOTHREAD   0x00000002                      // I/O thread methods
                     52: #define DDM_INIT               0x00000004                      // Initialization
                     53: #define DDM_INTR               0x00000008                      // Interrupt
                     54: #define DDM_CHIP               0x00000010                      // chip-level
                     55: #define DDM_ERROR              0x00000020                      // error
                     56: #define DDM_DMA                        0x00000040                      // DMA
                     57: #define DDM_ENTRY              0x00000010                      // method entry and exit
                     58: #
                     59: #define DDM_CONSOLE_LOG                0                               /* really hosed...*/
                     60: 
                     61: #if APPLE96_ALWAYS_ASSERT
                     62: #undef ASSERT
                     63: #define ASSERT(what) do { if (!(what)) IOLog("Assert \"%s\" at %s, %d\n", #what, __FILE__, __LINE__);  } while (0)
                     64: #endif
                     65: #if    DDM_CONSOLE_LOG
                     66: #undef IODEBUG
                     67: #define IODEBUG(index, mask, x, a, b, c, d, e) {       \
                     68:        if (IODDMMasks[index] & mask) {                                 \
                     69:                IOLog(x, a, b, c,d, e);                                         \
                     70:        }                                                                                               \
                     71: }
                     72: #endif /* DDM_CONSOLE_LOG */
                     73: #if VERY_SERIOUS_DEBUGGING /* TEMP for initial debug */
                     74: #undef IODEBUG
                     75: #define IODEBUG(index, mask, x, a, b, c, d, e) printf(x, a, b, c, d, e)
                     76: #endif /* TEMP */
                     77: 
                     78: /*
                     79:  * Normal ddm calls..
                     80:  */
                     81: #define ddmExported(x, a, b, c, d, e)                                  \
                     82:        IODEBUG(APPLE96_DDM_INDEX, DDM_EXPORTED, x, a, b, c, d, e)
                     83:        
                     84: #define ddmThread(x, a, b, c, d, e)                                    \
                     85:        IODEBUG(APPLE96_DDM_INDEX, DDM_IOTHREAD, x, a, b, c, d, e)
                     86: 
                     87: #define ddmInit(x, a, b, c, d, e)                                      \
                     88:        IODEBUG(APPLE96_DDM_INDEX, DDM_INIT, x, a, b, c, d, e)
                     89: 
                     90: #define ddmEntry(x, a, b, c, d, e)                                     \
                     91:        IODEBUG(APPLE96_DDM_INDEX, DDM_ENTRY, x, a, b, c, d, e)
                     92: 
                     93: /*
                     94:  * catch both I/O thread events and interrupt events.
                     95:  */
                     96: #define ddmInterrupt(x, a, b, c, d, e)                                         \
                     97:        IODEBUG(APPLE96_DDM_INDEX, (DDM_IOTHREAD | DDM_INTR), x, a, b, c, d, e)
                     98: 
                     99: #define ddmChip(x, a, b, c, d, e)                                      \
                    100:        IODEBUG(APPLE96_DDM_INDEX, DDM_CHIP, x, a, b, c, d, e)
                    101: 
                    102: #define ddmError(x, a, b, c, d, e)                                     \
                    103:        IODEBUG(APPLE96_DDM_INDEX, DDM_ERROR, x, a, b, c, d, e)
                    104: 
                    105: #define ddmDMA(x, a, b, c, d, e)                                       \
                    106:        IODEBUG(APPLE96_DDM_INDEX, DDM_DMA, x, a, b, c, d, e)
                    107: 
                    108: /*
                    109:  * Method entry/exit traces. Note that these have unbalanced
                    110:  * parentheses in order to enforce a single exit point and
                    111:  * provide for method timing. By convention, the first three
                    112:  * bytes of the "what" string will be used for timestamping,
                    113:  * so make them unique (at the expense of readability).
                    114:  */
                    115: #if 0 && DDM_DEBUG // TEMP for initial debugging
                    116: #define ENTRY(what) do {                       \
                    117:        const char *__tag__ = (what);           \
                    118:        StoreTimestamp(OSTag('+', __tag__), 0); \
                    119:        ddmEntry("+%s\n", __tag__, 2, 3, 4, 5); \
                    120:        do {
                    121: #define EXIT() } while(0);                     \
                    122:        StoreTimestamp(OSTag('-', __tag__), 0); \
                    123:        ddmEntry("-%s\n", __tag__, 2, 3, 4, 5); \
                    124:     } while (0)
                    125: #define TAG(name, value) RAW_TAG(OSTag('*', name), value)
                    126: #define RAW_TAG(tag, value) do {               \
                    127:        StoreTimestamp((tag), (UInt32) (value)); \
                    128:     } while (0)
                    129: #define RESULT(result) } while(0);             \
                    130:        StoreTimestamp(OSTag('-', __tag__), (UInt32) (result)); \
                    131:        ddmEntry("=%s %08x, %8u %8d\n", __tag__, \
                    132:                (UInt32) (result),              \
                    133:                (UInt32) (result),              \
                    134:                (int)    (result),              \
                    135:                5);                             \
                    136:        } while (0)
                    137: #else /* No DDM_DEBUG */
                    138: #define ENTRY(what) do {                       \
                    139:        const char *__tag__ = (what);           \
                    140:        StoreTimestamp(OSTag('+', __tag__), 0); \
                    141:        do {
                    142: #define EXIT() } while(0);                     \
                    143:        StoreTimestamp(OSTag('-', __tag__), 0); \
                    144:        } while (0)
                    145: #define TAG(name, value) RAW_TAG(OSTag('*', name), value)
                    146: #define RAW_TAG(tag, value) do {               \
                    147:        StoreTimestamp((tag), (UInt32) (value)); \
                    148:        } while (0)
                    149: #define RESULT(result) } while(0);             \
                    150:        StoreTimestamp(OSTag('-', __tag__), (UInt32) (result)); \
                    151:        } while (0)
                    152: #endif /* DDM_DEBUG */
                    153: 

unix.superglobalmegacorp.com

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