Annotation of Gnu-Mach/ddb/tr.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * (c) Copyright 1992, 1993, 1994, 1995 OPEN SOFTWARE FOUNDATION, INC. 
                      3:  * ALL RIGHTS RESERVED 
                      4:  */
                      5: /*
                      6:  * OSF RI nmk19b2 5/2/95
                      7:  */
                      8: 
                      9: /*
                     10:  *     File:           ddb/tr.h
                     11:  *     Author:         Alan Langerman, Jeffrey Heller
                     12:  *     Date:           1992
                     13:  *
                     14:  *     Internal trace routines.  Like old-style XPRs but
                     15:  *     less formatting.
                     16:  */
                     17: 
                     18: #include <mach_assert.h>
                     19: #include <mach_tr.h>
                     20: 
                     21: /*
                     22:  *     Originally, we only wanted tracing when
                     23:  *     MACH_TR and MACH_ASSERT were turned on
                     24:  *     together.  Now, there's no reason why
                     25:  *     MACH_TR and MACH_ASSERT can't be completely
                     26:  *     orthogonal.
                     27:  */
                     28: #define        TRACE_BUFFER    (MACH_TR)
                     29: 
                     30: /*
                     31:  *     Log events in a circular trace buffer for future debugging.
                     32:  *     Events are unsigned integers.  Each event has a descriptive
                     33:  *     message.
                     34:  *
                     35:  *     TR_DECL must be used at the beginning of a routine using
                     36:  *     one of the tr calls.  The macro should be passed the name
                     37:  *     of the function surrounded by quotation marks, e.g.,
                     38:  *             TR_DECL("netipc_recv_intr");
                     39:  *     and should be terminated with a semi-colon.  The TR_DECL
                     40:  *     must be the *last* declaration in the variable declaration
                     41:  *     list, or syntax errors will be introduced when TRACE_BUFFER
                     42:  *     is turned off.
                     43:  */
                     44: #ifndef        _DDB_TR_H_
                     45: #define        _DDB_TR_H_
                     46: 
                     47: #if    TRACE_BUFFER
                     48: 
                     49: #include <machine/db_machdep.h>
                     50: 
                     51: #define        __ui__                  (unsigned int)
                     52: #define        TR_INIT()               tr_init()
                     53: #define TR_SHOW(a,b,c)         show_tr((a),(b),(c))
                     54: #define        TR_DECL(funcname)       char    *__ntr_func_name__ = funcname
                     55: #define        tr1(msg)                                                        \
                     56:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
                     57:                0,0,0,0)
                     58: #define        tr2(msg,tag1)                                                   \
                     59:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
                     60:                __ui__(tag1),0,0,0)
                     61: #define        tr3(msg,tag1,tag2)                                              \
                     62:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
                     63:                __ui__(tag1),__ui__(tag2),0,0)
                     64: #define        tr4(msg,tag1,tag2,tag3)                                         \
                     65:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
                     66:                __ui__(tag1),__ui__(tag2),__ui__(tag3),0)
                     67: #define        tr5(msg,tag1,tag2,tag3,tag4)                                    \
                     68:        tr(__ntr_func_name__, __FILE__, __LINE__, (msg),                \
                     69:                __ui__(tag1),__ui__(tag2),__ui__(tag3),__ui__(tag4))
                     70: 
                     71: /*
                     72:  *     Adjust tr log indentation based on function
                     73:  *     call graph; this method is quick-and-dirty
                     74:  *     and only works safely on a uniprocessor.
                     75:  */
                     76: extern int tr_indent;
                     77: #define        tr_start()      tr_indent++
                     78: #define tr_stop()      tr_indent--
                     79: 
                     80: extern void    tr_init(void);
                     81: extern void    tr(
                     82:                        char            *funcname,
                     83:                        char            *file,
                     84:                        unsigned int    lineno,
                     85:                        char            *fmt,
                     86:                        unsigned int    tag1,
                     87:                        unsigned int    tag2,
                     88:                        unsigned int    tag3,
                     89:                        unsigned int    tag4);
                     90: 
                     91: extern void db_show_tr(
                     92:                        db_expr_t       addr,
                     93:                        boolean_t       have_addr,
                     94:                        db_expr_t       count,
                     95:                        char *          modif);
                     96: 
                     97: #else  /* TRACE_BUFFER */
                     98: 
                     99: #define        TR_INIT()
                    100: #define TR_SHOW(a,b,c)
                    101: #define        TR_DECL(funcname)
                    102: #define tr1(msg)
                    103: #define tr2(msg, tag1)
                    104: #define tr3(msg, tag1, tag2)
                    105: #define tr4(msg, tag1, tag2, tag3)
                    106: #define tr5(msg, tag1, tag2, tag3, tag4)
                    107: #define        tr_start()
                    108: #define tr_stop()
                    109: 
                    110: #endif /* TRACE_BUFFER */
                    111: 
                    112: #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.