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