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