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