xref: /illumos-gate/usr/src/uts/common/io/bnx/debug.h (revision eef4f27b270242808b43b4b23bd161df52839361)
1*eef4f27bSRobert Mustacchi /*
2*eef4f27bSRobert Mustacchi  * Copyright 2014-2017 Cavium, Inc.
3*eef4f27bSRobert Mustacchi  * The contents of this file are subject to the terms of the Common Development
4*eef4f27bSRobert Mustacchi  * and Distribution License, v.1,  (the "License").
5*eef4f27bSRobert Mustacchi  *
6*eef4f27bSRobert Mustacchi  * You may not use this file except in compliance with the License.
7*eef4f27bSRobert Mustacchi  *
8*eef4f27bSRobert Mustacchi  * You can obtain a copy of the License at available
9*eef4f27bSRobert Mustacchi  * at http://opensource.org/licenses/CDDL-1.0
10*eef4f27bSRobert Mustacchi  *
11*eef4f27bSRobert Mustacchi  * See the License for the specific language governing permissions and
12*eef4f27bSRobert Mustacchi  * limitations under the License.
13*eef4f27bSRobert Mustacchi  */
14*eef4f27bSRobert Mustacchi 
15*eef4f27bSRobert Mustacchi /*
16*eef4f27bSRobert Mustacchi  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
17*eef4f27bSRobert Mustacchi  */
18*eef4f27bSRobert Mustacchi 
19*eef4f27bSRobert Mustacchi #ifndef _DEBUG_H
20*eef4f27bSRobert Mustacchi #define	_DEBUG_H
21*eef4f27bSRobert Mustacchi 
22*eef4f27bSRobert Mustacchi 
23*eef4f27bSRobert Mustacchi 
24*eef4f27bSRobert Mustacchi /*
25*eef4f27bSRobert Mustacchi  * Debug break and output routines.
26*eef4f27bSRobert Mustacchi  */
27*eef4f27bSRobert Mustacchi 
28*eef4f27bSRobert Mustacchi void
29*eef4f27bSRobert Mustacchi debug_break(void *ctx);
30*eef4f27bSRobert Mustacchi 
31*eef4f27bSRobert Mustacchi void debug_msg(void *ctx, unsigned long level, char *file, unsigned long line,
32*eef4f27bSRobert Mustacchi     char *msg, ...);
33*eef4f27bSRobert Mustacchi 
34*eef4f27bSRobert Mustacchi void debug_msgx(void *ctx, unsigned long level, char *msg, ...);
35*eef4f27bSRobert Mustacchi 
36*eef4f27bSRobert Mustacchi 
37*eef4f27bSRobert Mustacchi 
38*eef4f27bSRobert Mustacchi /*
39*eef4f27bSRobert Mustacchi  * Debug macros
40*eef4f27bSRobert Mustacchi  */
41*eef4f27bSRobert Mustacchi 
42*eef4f27bSRobert Mustacchi /* Code paths. */
43*eef4f27bSRobert Mustacchi #define	CP_INIT			0x010000    /* Initialization */
44*eef4f27bSRobert Mustacchi #define	CP_SEND			0x020000    /* Transmit */
45*eef4f27bSRobert Mustacchi #define	CP_RCV			0x040000    /* Recieve */
46*eef4f27bSRobert Mustacchi #define	CP_INT			0x080000    /* Interrupt */
47*eef4f27bSRobert Mustacchi #define	CP_UINIT		0x100000    /* Unload */
48*eef4f27bSRobert Mustacchi #define	CP_RESET		0x200000    /* Reset */
49*eef4f27bSRobert Mustacchi #define	CP_GEN_BUF		0x400000    /* Generic buffer. */
50*eef4f27bSRobert Mustacchi #define	CP_ALL			0xffff0000  /* All code path */
51*eef4f27bSRobert Mustacchi 
52*eef4f27bSRobert Mustacchi #define	CP_MASK			0xffff0000
53*eef4f27bSRobert Mustacchi 
54*eef4f27bSRobert Mustacchi 
55*eef4f27bSRobert Mustacchi /* Mess	ge levels. */
56*eef4f27bSRobert Mustacchi #define	LV_VERBOSE		0x03
57*eef4f27bSRobert Mustacchi #define	LV_INFORM		0x02
58*eef4f27bSRobert Mustacchi #define	LV_WARN			0x01
59*eef4f27bSRobert Mustacchi #define	LV_FATAL		0x00
60*eef4f27bSRobert Mustacchi 
61*eef4f27bSRobert Mustacchi #define	LV_MASK			0xffff
62*eef4f27bSRobert Mustacchi 
63*eef4f27bSRobert Mustacchi 
64*eef4f27bSRobert Mustacchi /*
65*eef4f27bSRobert Mustacchi  * Code path and messsage level combined.  These are the first argument
66*eef4f27bSRobert Mustacchi  * of the DbgMessage macro.
67*eef4f27bSRobert Mustacchi  */
68*eef4f27bSRobert Mustacchi 
69*eef4f27bSRobert Mustacchi #define	VERBOSEi		(CP_INIT | LV_VERBOSE)
70*eef4f27bSRobert Mustacchi #define	INFORMi			(CP_INIT | LV_INFORM)
71*eef4f27bSRobert Mustacchi #define	WARNi			(CP_INIT | LV_WARN)
72*eef4f27bSRobert Mustacchi 
73*eef4f27bSRobert Mustacchi #define	VERBOSEtx		(CP_SEND | LV_VERBOSE)
74*eef4f27bSRobert Mustacchi #define	INFORMtx		(CP_SEND | LV_INFORM)
75*eef4f27bSRobert Mustacchi #define	WARNtx			(CP_SEND | LV_WARN)
76*eef4f27bSRobert Mustacchi 
77*eef4f27bSRobert Mustacchi #define	VERBOSErx		(CP_RCV | LV_VERBOSE)
78*eef4f27bSRobert Mustacchi #define	INFORMrx		(CP_RCV | LV_INFORM)
79*eef4f27bSRobert Mustacchi #define	WARNrx			(CP_RCV | LV_WARN)
80*eef4f27bSRobert Mustacchi 
81*eef4f27bSRobert Mustacchi #define	VERBOSEint		(CP_INT | LV_VERBOSE)
82*eef4f27bSRobert Mustacchi #define	INFORMint		(CP_INT | LV_INFORM)
83*eef4f27bSRobert Mustacchi #define	WARNint			(CP_INT | LV_WARN)
84*eef4f27bSRobert Mustacchi 
85*eef4f27bSRobert Mustacchi #define	VERBOSEu		(CP_UINIT | LV_VERBOSE)
86*eef4f27bSRobert Mustacchi #define	INFORMu			(CP_UINIT | LV_INFORM)
87*eef4f27bSRobert Mustacchi #define	WARNu			(CP_UINIT | LV_WARN)
88*eef4f27bSRobert Mustacchi 
89*eef4f27bSRobert Mustacchi #define	VERBOSErs		(CP_RESET | LV_VERBOSE)
90*eef4f27bSRobert Mustacchi #define	INFORMrs		(CP_RESET | LV_INFORM)
91*eef4f27bSRobert Mustacchi #define	WARNrs			(CP_RESET | LV_WARN)
92*eef4f27bSRobert Mustacchi 
93*eef4f27bSRobert Mustacchi #define	VERBOSEgb		(CP_GEN_BUF | LV_VERBOSE)
94*eef4f27bSRobert Mustacchi #define	INFORMgb		(CP_GEN_BUF | LV_INFORM)
95*eef4f27bSRobert Mustacchi #define	WARNgb			(CP_GEN_BUF | LV_WARN)
96*eef4f27bSRobert Mustacchi 
97*eef4f27bSRobert Mustacchi 
98*eef4f27bSRobert Mustacchi #define	FATAL			(CP_ALL | LV_FATAL)
99*eef4f27bSRobert Mustacchi #define	WARN			(CP_ALL | LV_WARN)
100*eef4f27bSRobert Mustacchi #define	INFORM			(CP_ALL | LV_INFORM)
101*eef4f27bSRobert Mustacchi #define	VERBOSE			(CP_ALL | LV_VERBOSE)
102*eef4f27bSRobert Mustacchi 
103*eef4f27bSRobert Mustacchi 
104*eef4f27bSRobert Mustacchi #if DBG
105*eef4f27bSRobert Mustacchi 
106*eef4f27bSRobert Mustacchi /*
107*eef4f27bSRobert Mustacchi  * These constants control the output of messages.
108*eef4f27bSRobert Mustacchi  * Set your debug message output level and code path here.
109*eef4f27bSRobert Mustacchi  */
110*eef4f27bSRobert Mustacchi #ifndef	DBG_MSG_CP
111*eef4f27bSRobert Mustacchi #define	DBG_MSG_CP		CP_ALL	/* Where to output messages. */
112*eef4f27bSRobert Mustacchi #endif
113*eef4f27bSRobert Mustacchi 
114*eef4f27bSRobert Mustacchi #ifndef	DBG_MSG_LV
115*eef4f27bSRobert Mustacchi #define	DBG_MSG_LV		LV_VERBOSE	/* Level of message output. */
116*eef4f27bSRobert Mustacchi #endif
117*eef4f27bSRobert Mustacchi 
118*eef4f27bSRobert Mustacchi 
119*eef4f27bSRobert Mustacchi /* CSTYLED */
120*eef4f27bSRobert Mustacchi #define	STATIC
121*eef4f27bSRobert Mustacchi #define	DbgBreak(_c)		debug_break(_c)
122*eef4f27bSRobert Mustacchi 
123*eef4f27bSRobert Mustacchi 
124*eef4f27bSRobert Mustacchi #define	CODE_PATH(_m)		((_m) & DBG_MSG_CP)
125*eef4f27bSRobert Mustacchi #define	MSG_LEVEL(_m)		((_m) & LV_MASK)
126*eef4f27bSRobert Mustacchi #define	LOG_MSG(_m)		(CODE_PATH(_m) && \
127*eef4f27bSRobert Mustacchi 				    MSG_LEVEL(_m) <= DBG_MSG_LV)
128*eef4f27bSRobert Mustacchi 
129*eef4f27bSRobert Mustacchi 
130*eef4f27bSRobert Mustacchi /* BEGIN CSTYLED */
131*eef4f27bSRobert Mustacchi #define	DbgMessage(_c, _m, _s)                                              \
132*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
133*eef4f27bSRobert Mustacchi     {                                                                       \
134*eef4f27bSRobert Mustacchi         debug_msg(_c, _m, __FILE__, __LINE__, _s);                          \
135*eef4f27bSRobert Mustacchi     }
136*eef4f27bSRobert Mustacchi #define	DbgMessage1(_c, _m, _s, _d1)                                        \
137*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
138*eef4f27bSRobert Mustacchi     {                                                                       \
139*eef4f27bSRobert Mustacchi         debug_msg(_c, _m, __FILE__, __LINE__, _s, _d1);                     \
140*eef4f27bSRobert Mustacchi     }
141*eef4f27bSRobert Mustacchi #define	DbgMessage2(_c, _m, _s, _d1, _d2)                                   \
142*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
143*eef4f27bSRobert Mustacchi     {                                                                       \
144*eef4f27bSRobert Mustacchi         debug_msg(_c, _m, __FILE__, __LINE__, _s, _d1, _d2);                \
145*eef4f27bSRobert Mustacchi     }
146*eef4f27bSRobert Mustacchi #define	DbgMessage3(_c, _m, _s, _d1, _d2, _d3)                              \
147*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
148*eef4f27bSRobert Mustacchi     {                                                                       \
149*eef4f27bSRobert Mustacchi         debug_msg(_c, _m, __FILE__, __LINE__, _s, _d1, _d2, _d3);           \
150*eef4f27bSRobert Mustacchi     }
151*eef4f27bSRobert Mustacchi #define	DbgMessage4(_c, _m, _s, _d1, _d2, _d3, _d4)                         \
152*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
153*eef4f27bSRobert Mustacchi     {                                                                       \
154*eef4f27bSRobert Mustacchi         debug_msg(_c, _m, __FILE__, __LINE__, _s, _d1, _d2, _d3, _d4);      \
155*eef4f27bSRobert Mustacchi     }
156*eef4f27bSRobert Mustacchi #define	DbgMessage5(_c, _m, _s, _d1, _d2, _d3, _d4, _d5)                    \
157*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
158*eef4f27bSRobert Mustacchi     {                                                                       \
159*eef4f27bSRobert Mustacchi         debug_msg(_c, _m, __FILE__, __LINE__, _s, _d1, _d2, _d3, _d4, _d5); \
160*eef4f27bSRobert Mustacchi     }
161*eef4f27bSRobert Mustacchi #define	DbgMessage6(_c, _m, _s, _d1, _d2, _d3, _d4, _d5, _d6)               \
162*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
163*eef4f27bSRobert Mustacchi     {                                                                       \
164*eef4f27bSRobert Mustacchi         debug_msg(_c, _m, __FILE__, __LINE__, _s, _d1,_d2,_d3,_d4,_d5,_d6); \
165*eef4f27bSRobert Mustacchi     }
166*eef4f27bSRobert Mustacchi 
167*eef4f27bSRobert Mustacchi #define	DbgMessageX(_c, _m, _s)                                             \
168*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
169*eef4f27bSRobert Mustacchi     {                                                                       \
170*eef4f27bSRobert Mustacchi         debug_msgx(_c, _m, _s);                                             \
171*eef4f27bSRobert Mustacchi     }
172*eef4f27bSRobert Mustacchi #define	DbgMessageX1(_c, _m, _s, _d1)                                       \
173*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
174*eef4f27bSRobert Mustacchi     {                                                                       \
175*eef4f27bSRobert Mustacchi         debug_msgx(_c, _m, _s, _d1);                                        \
176*eef4f27bSRobert Mustacchi     }
177*eef4f27bSRobert Mustacchi #define	DbgMessageX2(_c, _m, _s, _d1, _d2)                                  \
178*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
179*eef4f27bSRobert Mustacchi     {                                                                       \
180*eef4f27bSRobert Mustacchi         debug_msgx(_c, _m, _s, _d1, _d2);                                   \
181*eef4f27bSRobert Mustacchi     }
182*eef4f27bSRobert Mustacchi #define	DbgMessageX3(_c, _m, _s, _d1, _d2, _d3)                             \
183*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
184*eef4f27bSRobert Mustacchi     {                                                                       \
185*eef4f27bSRobert Mustacchi         debug_msgx(_c, _m, _s, _d1, _d2, _d3);                              \
186*eef4f27bSRobert Mustacchi     }
187*eef4f27bSRobert Mustacchi #define	DbgMessageX4(_c, _m, _s, _d1, _d2, _d3, _d4)                        \
188*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
189*eef4f27bSRobert Mustacchi     {                                                                       \
190*eef4f27bSRobert Mustacchi         debug_msgx(_c, _m, _s, _d1, _d2, _d3, _d4);                         \
191*eef4f27bSRobert Mustacchi     }
192*eef4f27bSRobert Mustacchi #define	DbgMessageX5(_c, _m, _s, _d1, _d2, _d3, _d4, _d5)                   \
193*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
194*eef4f27bSRobert Mustacchi     {                                                                       \
195*eef4f27bSRobert Mustacchi         debug_msgx(_c, _m, _s, _d1, _d2, _d3, _d4, _d5);                    \
196*eef4f27bSRobert Mustacchi     }
197*eef4f27bSRobert Mustacchi #define	DbgMessageX6(_c, _m, _s, _d1, _d2, _d3, _d4, _d5, _d6)              \
198*eef4f27bSRobert Mustacchi     if (LOG_MSG(_m))                                                        \
199*eef4f27bSRobert Mustacchi     {                                                                       \
200*eef4f27bSRobert Mustacchi         debug_msgx(_c, _m, _s, _d1,_d2,_d3,_d4,_d5,_d6);                    \
201*eef4f27bSRobert Mustacchi     }
202*eef4f27bSRobert Mustacchi 
203*eef4f27bSRobert Mustacchi #define	DbgBreakIf(_c)							\
204*eef4f27bSRobert Mustacchi     if (_c)								\
205*eef4f27bSRobert Mustacchi     {									\
206*eef4f27bSRobert Mustacchi         debug_msg(NULL, FATAL, __FILE__, __LINE__, "if("#_c##")\n");	\
207*eef4f27bSRobert Mustacchi         debug_break(NULL);						\
208*eef4f27bSRobert Mustacchi     }
209*eef4f27bSRobert Mustacchi 
210*eef4f27bSRobert Mustacchi #define	DbgBreakMsg(_m)	debug_msg(NULL, FATAL, __FILE__, __LINE__, _m); \
211*eef4f27bSRobert Mustacchi     debug_break(NULL)
212*eef4f27bSRobert Mustacchi /* END CSTYLED */
213*eef4f27bSRobert Mustacchi 
214*eef4f27bSRobert Mustacchi 
215*eef4f27bSRobert Mustacchi #else
216*eef4f27bSRobert Mustacchi 
217*eef4f27bSRobert Mustacchi /* CSTYLED */
218*eef4f27bSRobert Mustacchi #define	STATIC static
219*eef4f27bSRobert Mustacchi 
220*eef4f27bSRobert Mustacchi #define	DbgBreak(_c)
221*eef4f27bSRobert Mustacchi 
222*eef4f27bSRobert Mustacchi #define	DbgMessage(_c, _m, _s)
223*eef4f27bSRobert Mustacchi #define	DbgMessage1(_c, _m, _s, _d1)
224*eef4f27bSRobert Mustacchi #define	DbgMessage2(_c, _m, _s, _d1, _d2)
225*eef4f27bSRobert Mustacchi #define	DbgMessage3(_c, _m, _s, _d1, _d2, _d3)
226*eef4f27bSRobert Mustacchi #define	DbgMessage4(_c, _m, _s, _d1, _d2, _d3, _d4)
227*eef4f27bSRobert Mustacchi #define	DbgMessage5(_c, _m, _s, _d1, _d2, _d3, _d4, _d5)
228*eef4f27bSRobert Mustacchi #define	DbgMessage6(_c, _m, _s, _d1, _d2, _d3, _d4, _d5, _d6)
229*eef4f27bSRobert Mustacchi 
230*eef4f27bSRobert Mustacchi #define	DbgMessageX(_c, _m, _s)
231*eef4f27bSRobert Mustacchi #define	DbgMessageX1(_c, _m, _s, _d1)
232*eef4f27bSRobert Mustacchi #define	DbgMessageX2(_c, _m, _s, _d1, _d2)
233*eef4f27bSRobert Mustacchi #define	DbgMessageX3(_c, _m, _s, _d1, _d2, _d3)
234*eef4f27bSRobert Mustacchi #define	DbgMessageX4(_c, _m, _s, _d1, _d2, _d3, _d4)
235*eef4f27bSRobert Mustacchi #define	DbgMessageX5(_c, _m, _s, _d1, _d2, _d3, _d4, _d5)
236*eef4f27bSRobert Mustacchi #define	DbgMessageX6(_c, _m, _s, _d1, _d2, _d3, _d4, _d5, _d6)
237*eef4f27bSRobert Mustacchi 
238*eef4f27bSRobert Mustacchi #define	DbgBreakIf(_c)
239*eef4f27bSRobert Mustacchi #define	DbgBreakMsg(_m)
240*eef4f27bSRobert Mustacchi 
241*eef4f27bSRobert Mustacchi #endif
242*eef4f27bSRobert Mustacchi 
243*eef4f27bSRobert Mustacchi #endif /* _DEBUG_H */
244