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 2003 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef _SYS_IB_MGT_IBMF_IBMF_TRACE_H
28 #define	_SYS_IB_MGT_IBMF_IBMF_TRACE_H
29 
30 #pragma ident	"%Z%%M%	%I%	%E% SMI"
31 
32 /*
33  * This file contains the IBMF trace/debug macros.
34  */
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 #include <sys/tnf_probe.h>
41 
42 #define	IBMF_TNF_ERROR		"ibmf ibmf_error"
43 #define	IBMF_TNF_TRACE		"ibmf ibmf_trace"
44 
45 /*
46  * Trace levels for printing
47  */
48 #define	DPRINT_L0	0	/* no messages */
49 #define	DPRINT_L1	1	/* major errors */
50 #define	DPRINT_L2	2	/* minor errors */
51 #define	DPRINT_L3	3	/* general debug */
52 #define	DPRINT_L4	4	/* general trace */
53 
54 /*
55  * Trace probe macros
56  */
57 #define	IBMF_TNF_NODEBUG	0
58 #define	IBMF_TNF_DEBUG		1
59 
60 #ifdef NPROBE /* NPROBE */
61 
62 #define	IBMF_TRACE_0(debug, trlevel, arg01, arg02, arg03, arg04)	\
63 	if (ibmf_trace_level > 0) {				\
64 		ibmf_dprintf(trlevel, arg04);			\
65 	}
66 
67 /* CSTYLED */
68 #define	IBMF_TRACE_1(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13)								\
69 	if (ibmf_trace_level > 0) {				\
70 		ibmf_dprintf(trlevel, arg04, arg13);		\
71 	}
72 
73 /* CSTYLED */
74 #define	IBMF_TRACE_2(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23)					\
75 	if (ibmf_trace_level > 0) {				\
76 		ibmf_dprintf(trlevel, arg04, arg13, arg23);	\
77 	}
78 
79 /* CSTYLED */
80 #define	IBMF_TRACE_3(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23, arg31, arg32, arg33)			\
81 	if (ibmf_trace_level > 0) {				\
82 		ibmf_dprintf(trlevel, arg04, arg13, arg23, arg33);	\
83 	}
84 
85 /* CSTYLED */
86 #define	IBMF_TRACE_4(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23, arg31, arg32, arg33, arg41, arg42, arg43)	\
87 	if (ibmf_trace_level > 0) {				\
88 		ibmf_dprintf(trlevel, arg04, arg13, arg23, arg33, arg43);\
89 	}
90 
91 /* CSTYLED */
92 #define	IBMF_TRACE_5(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23, arg31, arg32, arg33, arg41, arg42, arg43, arg51, arg52, arg53)	\
93 	if (ibmf_trace_level > 0) {				\
94 		ibmf_dprintf(trlevel, arg04, arg13, arg23, arg33, \
95 		    arg43, arg53);				\
96 	}
97 
98 #else
99 
100 #define	IBMF_TRACE_0(debug, trlevel, arg01, arg02, arg03, arg04)	\
101 {								\
102 	boolean_t	use_debug = debug;			\
103 	if (use_debug) {					\
104 		TNF_PROBE_0_DEBUG(arg01, arg02, arg03);		\
105 	} else {						\
106 		TNF_PROBE_0(arg01, arg02, arg03);		\
107 	}							\
108 	if (ibmf_trace_level > 0) {				\
109 		ibmf_dprintf(trlevel, arg04);			\
110 	}							\
111 }
112 
113 /* CSTYLED */
114 #define	IBMF_TRACE_1(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13) 								\
115 {								\
116 	boolean_t	use_debug = debug;			\
117 	if (use_debug) {					\
118 		TNF_PROBE_1_DEBUG(arg01, arg02, arg03, arg11, arg12, arg13);\
119 	} else {						\
120 		TNF_PROBE_1(arg01, arg02, arg03, arg11, arg12, arg13);	\
121 	}							\
122 	if (ibmf_trace_level > 0) {				\
123 		ibmf_dprintf(trlevel, arg04, arg13);		\
124 	}							\
125 }
126 
127 /* CSTYLED */
128 #define	IBMF_TRACE_2(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23) 					\
129 {								\
130 	boolean_t	use_debug = debug;			\
131 	if (use_debug) {					\
132 		TNF_PROBE_2_DEBUG(arg01, arg02, arg03, arg11, arg12, \
133 		    arg13, arg21, arg22, arg23);		\
134 	} else {						\
135 		TNF_PROBE_2(arg01, arg02, arg03, arg11, arg12, arg13, \
136 		    arg21, arg22, arg23);			\
137 	}							\
138 	if (ibmf_trace_level > 0) {				\
139 		ibmf_dprintf(trlevel, arg04, arg13, arg23);	\
140 	}							\
141 }
142 
143 /* CSTYLED */
144 #define	IBMF_TRACE_3(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23, arg31, arg32, arg33) 		\
145 {								\
146 	boolean_t	use_debug = debug;			\
147 	if (use_debug) {					\
148 		TNF_PROBE_3_DEBUG(arg01, arg02, arg03, arg11, arg12, arg13, \
149 		    arg21, arg22, arg23, arg31, arg32, arg33);	\
150 	} else {						\
151 		TNF_PROBE_3(arg01, arg02, arg03, arg11, arg12, arg13, arg21, \
152 		    arg22, arg23, arg31, arg32, arg33);		\
153 	}							\
154 	if (ibmf_trace_level > 0) {				\
155 		ibmf_dprintf(trlevel, arg04, arg13, arg23, arg33);	\
156 	}							\
157 }
158 
159 /* CSTYLED */
160 #define	IBMF_TRACE_4(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23, arg31, arg32, arg33, arg41, arg42, arg43) \
161 {								\
162 	boolean_t	use_debug = debug;			\
163 	if (use_debug) {					\
164 		TNF_PROBE_4_DEBUG(arg01, arg02, arg03, arg11, arg12, arg13, \
165 		    arg21, arg22, arg23, arg31, arg32, arg33, arg41, arg42, \
166 		    arg43);						\
167 	} else {						\
168 		TNF_PROBE_4(arg01, arg02, arg03, arg11, arg12, arg13, arg21, \
169 		    arg22, arg23, arg31, arg32, arg33, arg41, arg42, arg43); \
170 	}							\
171 	if (ibmf_trace_level > 0) {				\
172 		ibmf_dprintf(trlevel, arg04, arg13, arg23, arg33, arg43);\
173 	}							\
174 }
175 
176 /* CSTYLED */
177 #define	IBMF_TRACE_5(debug, trlevel, arg01, arg02, arg03, arg04, arg11, arg12, arg13, arg21, arg22, arg23, arg31, arg32, arg33, arg41, arg42, arg43, arg51, arg52, arg53) 							\
178 {								\
179 	boolean_t	use_debug = debug;			\
180 	if (use_debug) {					\
181 		TNF_PROBE_5_DEBUG(arg01, arg02, arg03, arg11, arg12, arg13, \
182 		    arg21, arg22, arg23, arg31, arg32, arg33, arg41, arg42, \
183 		    arg43, arg51, arg52, arg53);		\
184 	} else {						\
185 		TNF_PROBE_5(arg01, arg02, arg03, arg11, arg12, arg13, arg21, \
186 		    arg22, arg23, arg31, arg32, arg33, arg41, arg42, arg43, \
187 		    arg51, arg52, arg53);			\
188 	}							\
189 	if (ibmf_trace_level > 0) {				\
190 		ibmf_dprintf(trlevel, arg04, arg13, arg23, arg33, arg43, \
191 		    arg53);					\
192 	}							\
193 }
194 
195 #endif
196 
197 void
198 ibmf_dprintf(int l, const char *fmt, ...);
199 
200 #ifdef __cplusplus
201 }
202 #endif
203 
204 #endif /* _SYS_IB_MGT_IBMF_IBMF_TRACE_H */
205