1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright (c) 1991-1993,2001 by Sun Microsystems, Inc.
24 * All rights reserved.
25 */
26
27#ifndef _SYS_NEXUSDEBUG_H
28#define	_SYS_NEXUSDEBUG_H
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32#ifdef	__cplusplus
33extern "C" {
34#endif
35
36/*
37 * Debugging macros
38 *
39 * The DPRINTF macro can be used by setting the debug_print_level to the
40 * appropriate debugging level.  The debug levels are defined in each source
41 * file where this header file is included.  The scoping of debug_info,
42 * and debug_print_level is to the file which included the header file.
43 * If multiple levels need to be output, the values can be 'ored'
44 * together into debug_print_level.  If debug_print_line's bit 1 is set, the
45 * line number of the debugging statement is printed out. If it has
46 * bit 2 set, the macro will drop into either the debugger or the OBP PROM.
47 */
48
49#ifdef  DEBUG
50#include <sys/promif.h>
51
52extern void debug_enter(char *);
53
54static int debug_info = 1;
55static int debug_print_level = 0;
56
57#define	PRINT_LINE_NUMBER	0x1
58#define	ENTER_MON		0x2
59
60#define	_PRINTF prom_printf	/* For logging to the console */
61
62#define	DPRINTF(print_flag, args)			\
63	if (debug_print_level & (print_flag) && debug_info & \
64	    PRINT_LINE_NUMBER) \
65		_PRINTF("%s line %d:\n", __FILE__, __LINE__);	\
66	if (debug_print_level & (print_flag)) {	\
67		_PRINTF args;				\
68	if (debug_info & ENTER_MON)			\
69		debug_enter("");				\
70	}
71
72#else
73#define	DPRINTF(print_flag, args)
74#endif /* DEBUG */
75
76#ifdef	__cplusplus
77}
78#endif
79
80#endif	/* _SYS_NEXUSDEBUG_H */
81