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 (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright 2014 QLogic Corporation
24  * The contents of this file are subject to the terms of the
25  * QLogic End User License (the "License").
26  * You may not use this file except in compliance with the License.
27  *
28  * You can obtain a copy of the License at
29  * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
30  * QLogic_End_User_Software_License.txt
31  * See the License for the specific language governing permissions
32  * and limitations under the License.
33  */
34 
35 /* This file is included by lmdev/include/debug.h */
36 
37 #ifndef __BNXE_DEBUG_H__
38 #define __BNXE_DEBUG_H__
39 
40 #include <sys/types.h>
41 #include <sys/cmn_err.h>
42 #include <sys/ddi.h>
43 #include <sys/sunddi.h>
44 #include <sys/varargs.h>
45 #undef u /* see bnxe.h for explanation */
46 
47 extern char * BnxeDevName(void *);
48 
49 
50 #ifdef DBG
51 
52 /********************************************/
53 /* all DbgXXX() routines are used by the LM */
54 /********************************************/
55 
56 /*
57  * Don't use the __FILE_STRIPPED macro as it will eat up too much read-only
58  * data and dtrace will fail to load on SPARC. Use __BASENAME__ passed to the
59  * compiler in the Makefile.
60  */
61 #if 0
62 #undef __FILE_STRIPPED__
63 #define __FILE_STRIPPED__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
64 #endif
65 
66 void DbgMessageFunc(void * pDev,
67                     int    level,
68                     char * pFmt,
69                     ...);
70 
71 #define DbgMessageXX(_c, _m, _s, ...)                  \
72     DbgMessageFunc(_c, _m, "!%s <0x%08x> %s(%d): " _s, \
73                    BnxeDevName((void *)_c),            \
74                    _m,                                 \
75                    __BASENAME__,                       \
76                    __LINE__,                           \
77                    ##__VA_ARGS__)
78 
79 #define DbgMessage DbgMessageXX
80 
81 #define DbgBreak() cmn_err(CE_PANIC, "%s(%d): DbgBreak!", \
82                            __BASENAME__,                  \
83                            __LINE__)
84 
85 #define DbgBreakMsg(_s) cmn_err(CE_PANIC, "%s(%d): " _s, \
86                                 __BASENAME__,            \
87                                 __LINE__)
88 
89 #define DbgBreakIf(_cond)                                              \
90     if (_cond)                                                         \
91     {                                                                  \
92         cmn_err(CE_PANIC, "%s(%d): Condition Failed! - if ("#_cond")", \
93                 __BASENAME__,                                          \
94                 __LINE__);                                             \
95     }
96 
97 #define DbgBreakFastPath()      DbgBreak()
98 #define DbgBreakMsgFastPath(_s) DbgBreakMsg(_s)
99 #define DbgBreakIfFastPath(_c)  DbgBreakIf(_c)
100 
101 #define dbg_out(_c, _m, _s, _d1) DbgMessageXX(_c, _m, _s, _d1)
102 
103 #endif /* DBG */
104 
105 
106 /*****************************************************************/
107 /* all BnxeDbgXXX() and BnxeLogXXX() routines are used by the UM */
108 /*****************************************************************/
109 
110 #define BnxeDbgBreak(_c) cmn_err(CE_PANIC, "%s: %s(%d): DbgBreak!", \
111                                  BnxeDevName(_c),                   \
112                                  __BASENAME__,                      \
113                                  __LINE__)
114 
115 #define BnxeDbgBreakMsg(_c, _s) cmn_err(CE_PANIC, "%s: %s(%d): " _s, \
116                                         BnxeDevName(_c),             \
117                                         __BASENAME__,                \
118                                         __LINE__)
119 
120 #define BnxeDbgBreakIf(_c, _cond)                                          \
121     if (_cond)                                                             \
122     {                                                                      \
123         cmn_err(CE_PANIC, "%s: %s(%d): Condition Failed! - if ("#_cond")", \
124                 BnxeDevName(_c),                                           \
125                 __BASENAME__,                                              \
126                 __LINE__);                                                 \
127     }
128 
129 #define BnxeDbgBreakFastPath(_c)           BnxeDbgBreak(_c)
130 #define BnxeDbgBreakMsgFastPath(_c, _s)    BnxeDbgBreakMsg(_c, _s)
131 #define BnxeDbgBreakIfFastPath(_c, _cond)  BnxeDbgBreakIf(_c, _cond)
132 
133 void BnxeLogInfo(void * pDev, char * pFmt, ...);
134 void BnxeLogWarn(void * pDev, char * pFmt, ...);
135 /* for CE_PANIC use one of the BnxeDbgBreak macros above */
136 
137 #ifdef DBG
138 void BnxeLogDbg(void * pDev, char * pFmt, ...);
139 #else
140 #define BnxeLogDbg
141 #endif
142 
143 #endif /* __BNXE_DEBUG_H__ */
144 
145