Annotation of XNU/osfmk/ddb/tr.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 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:  * @OSF_COPYRIGHT@
        !            24:  */
        !            25: /*
        !            26:  * HISTORY
        !            27:  * 
        !            28:  * Revision 1.1.1.1  1998/09/22 21:05:48  wsanchez
        !            29:  * Import of Mac OS X kernel (~semeria)
        !            30:  *
        !            31:  * Revision 1.1.1.1  1998/03/07 02:26:09  wsanchez
        !            32:  * Import of OSF Mach kernel (~mburg)
        !            33:  *
        !            34:  * Revision 1.1.11.1  1997/03/27  18:47:01  barbou
        !            35:  *     Merge smp_shared merges into mainline.
        !            36:  *     [1996/09/19  13:55:17  addis]
        !            37:  *     Make tr_indent NCPU safe.
        !            38:  *     [95/10/09            rwd]
        !            39:  *     Added TR_INIT() macro.
        !            40:  *     Change from NMK16.1 [93/09/22            paire]
        !            41:  *     [94/02/04            paire]
        !            42:  *     [97/02/25            barbou]
        !            43:  *
        !            44:  * Revision 1.1.6.1  1995/02/23  16:34:23  alanl
        !            45:  *     Taken from DIPC2_SHARED.  Change to !FREE Copyright.
        !            46:  *     [95/01/05            rwd]
        !            47:  * 
        !            48:  * Revision 1.1.4.4  1994/08/18  01:07:26  alanl
        !            49:  *     + Allow tracing strictly based on MACH_TR;
        !            50:  *     don't also require MACH_ASSERT (alanl).
        !            51:  *     + ANSI-fication:  cast tr arguments (alanl).
        !            52:  *     + Added tr_indent and macros to use it (sjs).
        !            53:  *     [1994/08/18  01:06:09  alanl]
        !            54:  * 
        !            55:  * Revision 1.1.4.3  1994/08/08  17:59:35  rwd
        !            56:  *     Include mach_tr.h
        !            57:  *     [94/08/08            rwd]
        !            58:  * 
        !            59:  * Revision 1.1.4.2  1994/08/05  19:36:08  mmp
        !            60:  *     Added prototype for db_show_tr.
        !            61:  * 
        !            62:  *     Conditionalize on MACH_TR
        !            63:  *     [94/07/20            rwd]
        !            64:  * 
        !            65:  * Revision 1.1.4.1  1994/08/04  01:43:04  mmp
        !            66:  *     DIPC:  moved from norma/ to ddb/.  Updated includes.
        !            67:  *     [1994/08/03  13:37:46  mmp]
        !            68:  * 
        !            69:  * Revision 1.1.9.1  1994/03/07  16:55:24  paire
        !            70:  *     Added ANSI prototypes.
        !            71:  *     [94/02/15            paire]
        !            72:  * 
        !            73:  *     Added TR_INIT() macro.
        !            74:  *     Change from NMK16.1 [93/09/22            paire]
        !            75:  *     [94/02/04            paire]
        !            76:  * 
        !            77:  * Revision 1.1.2.2  1993/06/02  23:57:10  jeffc
        !            78:  *     Added to OSF/1 R1.3 from NMK15.0.
        !            79:  *     [1993/06/02  21:22:08  jeffc]
        !            80:  * 
        !            81:  * Revision 1.1  1992/09/30  02:34:09  robert
        !            82:  *     Initial revision
        !            83:  * 
        !            84:  * $EndLog$
        !            85:  */
        !            86: 
        !            87: /*
        !            88:  *     File:           ddb/tr.h
        !            89:  *     Author:         Alan Langerman, Jeffrey Heller
        !            90:  *     Date:           1992
        !            91:  *
        !            92:  *     Internal trace routines.  Like old-style XPRs but
        !            93:  *     less formatting.
        !            94:  */
        !            95: 
        !            96: #include <mach_assert.h>
        !            97: #include <mach_tr.h>
        !            98: 
        !            99: #include <kern/cpu_number.h>
        !           100: 
        !           101: /*
        !           102:  *     Originally, we only wanted tracing when
        !           103:  *     MACH_TR and MACH_ASSERT were turned on
        !           104:  *     together.  Now, there's no reason why
        !           105:  *     MACH_TR and MACH_ASSERT can't be completely
        !           106:  *     orthogonal.
        !           107:  */
        !           108: #define        TRACE_BUFFER    (MACH_TR)
        !           109: 
        !           110: /*
        !           111:  *     Log events in a circular trace buffer for future debugging.
        !           112:  *     Events are unsigned integers.  Each event has a descriptive
        !           113:  *     message.
        !           114:  *
        !           115:  *     TR_DECL must be used at the beginning of a routine using
        !           116:  *     one of the tr calls.  The macro should be passed the name
        !           117:  *     of the function surrounded by quotation marks, e.g.,
        !           118:  *             TR_DECL("netipc_recv_intr");
        !           119:  *     and should be terminated with a semi-colon.  The TR_DECL
        !           120:  *     must be the *last* declaration in the variable declaration
        !           121:  *     list, or syntax errors will be introduced when TRACE_BUFFER
        !           122:  *     is turned off.
        !           123:  */
        !           124: #ifndef        _DDB_TR_H_
        !           125: #define        _DDB_TR_H_
        !           126: 
        !           127: #if    TRACE_BUFFER
        !           128: 
        !           129: #include <machine/db_machdep.h>
        !           130: 
        !           131: #define        __ui__                  (unsigned int)
        !           132: #define        TR_INIT()               tr_init()
        !           133: #define TR_SHOW(a,b,c)         show_tr((a),(b),(c))
        !           134: #define        TR_DECL(funcname)       char    *__ntr_func_name__ = funcname
        !           135: #define        tr1(msg)                                                        \
        !           136:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
        !           137:                0,0,0,0)
        !           138: #define        tr2(msg,tag1)                                                   \
        !           139:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
        !           140:                __ui__(tag1),0,0,0)
        !           141: #define        tr3(msg,tag1,tag2)                                              \
        !           142:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
        !           143:                __ui__(tag1),__ui__(tag2),0,0)
        !           144: #define        tr4(msg,tag1,tag2,tag3)                                         \
        !           145:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
        !           146:                __ui__(tag1),__ui__(tag2),__ui__(tag3),0)
        !           147: #define        tr5(msg,tag1,tag2,tag3,tag4)                                    \
        !           148:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
        !           149:                __ui__(tag1),__ui__(tag2),__ui__(tag3),__ui__(tag4))
        !           150: 
        !           151: /*
        !           152:  *     Adjust tr log indentation based on function
        !           153:  *     call graph.
        !           154:  */
        !           155: #if    NCPUS == 1
        !           156: extern int tr_indent;
        !           157: #define        tr_start()      tr_indent++
        !           158: #define tr_stop()      tr_indent--
        !           159: #else  /* NCPUS == 1 */
        !           160: extern int tr_indent[NCPUS];
        !           161: #define        tr_start()      tr_indent[cpu_number()]++
        !           162: #define tr_stop()      (--tr_indent[cpu_number()]<0?tr_indent[cpu_number()]=0:0);
        !           163: #endif /* NCPUS == 1 */
        !           164: 
        !           165: extern void    tr_init(void);
        !           166: extern void    tr(
        !           167:                        char            *funcname,
        !           168:                        char            *file,
        !           169:                        unsigned int    lineno,
        !           170:                        char            *fmt,
        !           171:                        unsigned int    tag1,
        !           172:                        unsigned int    tag2,
        !           173:                        unsigned int    tag3,
        !           174:                        unsigned int    tag4);
        !           175: 
        !           176: extern void db_show_tr(
        !           177:                        db_expr_t       addr,
        !           178:                        boolean_t       have_addr,
        !           179:                        db_expr_t       count,
        !           180:                        char *          modif);
        !           181: 
        !           182: #else  /* TRACE_BUFFER */
        !           183: 
        !           184: #define        TR_INIT()
        !           185: #define TR_SHOW(a,b,c)
        !           186: #define        TR_DECL(funcname)
        !           187: #define tr1(msg)
        !           188: #define tr2(msg, tag1)
        !           189: #define tr3(msg, tag1, tag2)
        !           190: #define tr4(msg, tag1, tag2, tag3)
        !           191: #define tr5(msg, tag1, tag2, tag3, tag4)
        !           192: #define        tr_start()
        !           193: #define tr_stop()
        !           194: 
        !           195: #endif /* TRACE_BUFFER */
        !           196: 
        !           197: #endif /* _DDB_TR_H_ */

unix.superglobalmegacorp.com

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