1a23fd118Syl /* 2a23fd118Syl * CDDL HEADER START 3a23fd118Syl * 4a23fd118Syl * The contents of this file are subject to the terms of the 5a23fd118Syl * Common Development and Distribution License (the "License"). 6a23fd118Syl * You may not use this file except in compliance with the License. 7a23fd118Syl * 8a23fd118Syl * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9a23fd118Syl * or http://www.opensolaris.org/os/licensing. 10a23fd118Syl * See the License for the specific language governing permissions 11a23fd118Syl * and limitations under the License. 12a23fd118Syl * 13a23fd118Syl * When distributing Covered Code, include this CDDL HEADER in each 14a23fd118Syl * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15a23fd118Syl * If applicable, add the following below this CDDL HEADER, with the 16a23fd118Syl * fields enclosed by brackets "[]" replaced with your own identifying 17a23fd118Syl * information: Portions Copyright [yyyy] [name of copyright owner] 18a23fd118Syl * 19a23fd118Syl * CDDL HEADER END 20a23fd118Syl * 21*8347601bSyl * Copyright (c) 2002-2006 Neterion, Inc. 22a23fd118Syl */ 23a23fd118Syl 24a23fd118Syl #ifndef XGE_DEBUG_H 25a23fd118Syl #define XGE_DEBUG_H 26a23fd118Syl 27a23fd118Syl #include "xge-os-pal.h" 28a23fd118Syl 29*8347601bSyl __EXTERN_BEGIN_DECLS 30*8347601bSyl 31a23fd118Syl /* to make some gcc versions happier */ 32a23fd118Syl #ifndef __func__ 33a23fd118Syl #define __func__ __FUNCTION__ 34a23fd118Syl #endif 35a23fd118Syl 36a23fd118Syl #ifdef XGE_DEBUG_FP 37a23fd118Syl #define XGE_DEBUG_FP_DEVICE 0x1 38a23fd118Syl #define XGE_DEBUG_FP_CHANNEL 0x2 39a23fd118Syl #define XGE_DEBUG_FP_FIFO 0x4 40a23fd118Syl #define XGE_DEBUG_FP_RING 0x8 41a23fd118Syl #endif 42a23fd118Syl 43a23fd118Syl /** 44a23fd118Syl * enum xge_debug_level_e 45a23fd118Syl * @XGE_NONE: debug disabled 46a23fd118Syl * @XGE_ERR: all errors going to be logged out 47a23fd118Syl * @XGE_TRACE: all errors plus all kind of verbose tracing print outs 48a23fd118Syl * going to be logged out. Very noisy. 49a23fd118Syl * 50a23fd118Syl * This enumeration going to be used to switch between different 51a23fd118Syl * debug levels during runtime if DEBUG macro defined during 52a23fd118Syl * compilation. If DEBUG macro not defined than code will be 53a23fd118Syl * compiled out. 54a23fd118Syl */ 55a23fd118Syl typedef enum xge_debug_level_e { 56a23fd118Syl XGE_NONE = 0, 57a23fd118Syl XGE_TRACE = 1, 58a23fd118Syl XGE_ERR = 2, 59a23fd118Syl } xge_debug_level_e; 60a23fd118Syl 61a23fd118Syl #define XGE_DEBUG_MODULE_MASK_DEF 0x00003030 62a23fd118Syl #define XGE_DEBUG_LEVEL_DEF XGE_ERR 63a23fd118Syl 64a23fd118Syl #if defined(XGE_DEBUG_TRACE_MASK) || defined(XGE_DEBUG_ERR_MASK) 65a23fd118Syl 66a23fd118Syl extern unsigned int *g_module_mask; 67a23fd118Syl extern int *g_level; 68a23fd118Syl 69a23fd118Syl #ifndef XGE_DEBUG_TRACE_MASK 70a23fd118Syl #define XGE_DEBUG_TRACE_MASK 0 71a23fd118Syl #endif 72a23fd118Syl 73a23fd118Syl #ifndef XGE_DEBUG_ERR_MASK 74a23fd118Syl #define XGE_DEBUG_ERR_MASK 0 75a23fd118Syl #endif 76a23fd118Syl 77a23fd118Syl /* 78a23fd118Syl * @XGE_COMPONENT_HAL_CONFIG: do debug for xge core config module 79a23fd118Syl * @XGE_COMPONENT_HAL_FIFO: do debug for xge core fifo module 80a23fd118Syl * @XGE_COMPONENT_HAL_RING: do debug for xge core ring module 81a23fd118Syl * @XGE_COMPONENT_HAL_CHANNEL: do debug for xge core channel module 82a23fd118Syl * @XGE_COMPONENT_HAL_DEVICE: do debug for xge core device module 83*8347601bSyl * @XGE_COMPONENT_HAL_DMQ: do debug for xge core DMQ module 84*8347601bSyl * @XGE_COMPONENT_HAL_UMQ: do debug for xge core UMQ module 85*8347601bSyl * @XGE_COMPONENT_HAL_SQ: do debug for xge core SQ module 86*8347601bSyl * @XGE_COMPONENT_HAL_SRQ: do debug for xge core SRQ module 87*8347601bSyl * @XGE_COMPONENT_HAL_CRQ: do debug for xge core CRQ module 88*8347601bSyl * @XGE_COMPONENT_HAL_LRQ: do debug for xge core LRQ module 89*8347601bSyl * @XGE_COMPONENT_HAL_LCQ: do debug for xge core LCQ module 90a23fd118Syl * @XGE_COMPONENT_CORE: do debug for xge KMA core module 91a23fd118Syl * @XGE_COMPONENT_OSDEP: do debug for xge KMA os dependent parts 92a23fd118Syl * @XGE_COMPONENT_LL: do debug for xge link layer module 93a23fd118Syl * @XGE_COMPONENT_ALL: activate debug for all modules with no exceptions 94a23fd118Syl * 95a23fd118Syl * This enumeration going to be used to distinguish modules 96a23fd118Syl * or libraries during compilation and runtime. Makefile must declare 97a23fd118Syl * XGE_DEBUG_MODULE_MASK macro and set it to proper value. 98a23fd118Syl */ 99*8347601bSyl #define XGE_COMPONENT_HAL_CONFIG 0x00000001 100*8347601bSyl #define XGE_COMPONENT_HAL_FIFO 0x00000002 101*8347601bSyl #define XGE_COMPONENT_HAL_RING 0x00000004 102*8347601bSyl #define XGE_COMPONENT_HAL_CHANNEL 0x00000008 103*8347601bSyl #define XGE_COMPONENT_HAL_DEVICE 0x00000010 104*8347601bSyl #define XGE_COMPONENT_HAL_MM 0x00000020 105*8347601bSyl #define XGE_COMPONENT_HAL_QUEUE 0x00000040 106*8347601bSyl #define XGE_COMPONENT_HAL_STATS 0x00000100 107*8347601bSyl #ifdef XGEHAL_RNIC 108*8347601bSyl #define XGE_COMPONENT_HAL_DMQ 0x00000200 109*8347601bSyl #define XGE_COMPONENT_HAL_UMQ 0x00000400 110*8347601bSyl #define XGE_COMPONENT_HAL_SQ 0x00000800 111*8347601bSyl #define XGE_COMPONENT_HAL_SRQ 0x00001000 112*8347601bSyl #define XGE_COMPONENT_HAL_CQRQ 0x00002000 113*8347601bSyl #define XGE_COMPONENT_HAL_LRQ 0x00004000 114*8347601bSyl #define XGE_COMPONENT_HAL_LCQ 0x00008000 115*8347601bSyl #define XGE_COMPONENT_HAL_POOL 0x00010000 116*8347601bSyl #endif 117*8347601bSyl 118a23fd118Syl /* space for CORE_XXX */ 119*8347601bSyl #define XGE_COMPONENT_OSDEP 0x10000000 120*8347601bSyl #define XGE_COMPONENT_LL 0x20000000 121a23fd118Syl #define XGE_COMPONENT_ALL 0xffffffff 122a23fd118Syl 123a23fd118Syl #ifndef XGE_DEBUG_MODULE_MASK 124a23fd118Syl #error "XGE_DEBUG_MODULE_MASK macro must be defined for DEBUG mode..." 125a23fd118Syl #endif 126a23fd118Syl 127a23fd118Syl #ifndef __GNUC__ 128a23fd118Syl #ifdef XGE_TRACE_INTO_CIRCULAR_ARR 129a23fd118Syl #define xge_trace_aux(fmt) xge_os_vatrace(g_xge_os_tracebuf, fmt) 130a23fd118Syl #else 131a23fd118Syl #define xge_trace_aux(fmt) xge_os_vaprintf(fmt) 132a23fd118Syl #endif 133a23fd118Syl 134a23fd118Syl /** 135a23fd118Syl * xge_debug 136a23fd118Syl * @level: level of debug verbosity. 137a23fd118Syl * @fmt: printf like format string 138a23fd118Syl * 139a23fd118Syl * Provides logging facilities. Can be customized on per-module 140a23fd118Syl * basis or/and with debug levels. Input parameters, except 141a23fd118Syl * module and level, are the same as posix printf. This function 142a23fd118Syl * may be compiled out if DEBUG macro was never defined. 143a23fd118Syl * See also: xge_debug_level_e{}. 144a23fd118Syl */ 145a23fd118Syl #define xge_debug(module, level, fmt) { \ 146a23fd118Syl if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \ 147a23fd118Syl (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \ 148a23fd118Syl level >= *g_level && module & *g_module_mask) { \ 149a23fd118Syl xge_trace_aux(fmt); \ 150a23fd118Syl } \ 151a23fd118Syl } 152a23fd118Syl #else /* __GNUC__ */ 153a23fd118Syl 154a23fd118Syl #ifdef XGE_TRACE_INTO_CIRCULAR_ARR 155a23fd118Syl #define xge_trace_aux(fmt...) xge_os_trace(g_xge_os_tracebuf, fmt) 156a23fd118Syl #else 157a23fd118Syl #define xge_trace_aux(fmt...) xge_os_printf(fmt) 158a23fd118Syl #endif 159a23fd118Syl 160a23fd118Syl #define xge_debug(module, level, fmt...) { \ 161a23fd118Syl if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \ 162a23fd118Syl (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \ 163a23fd118Syl level >= *g_level && module & *g_module_mask) { \ 164a23fd118Syl xge_trace_aux(fmt); \ 165a23fd118Syl } \ 166a23fd118Syl } 167a23fd118Syl #endif /* __GNUC__ */ 168a23fd118Syl 169a23fd118Syl #if (XGE_COMPONENT_HAL_STATS & XGE_DEBUG_MODULE_MASK) 170a23fd118Syl #ifndef __GNUC__ 171a23fd118Syl static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) { 172a23fd118Syl u32 module = XGE_COMPONENT_HAL_STATS; 173a23fd118Syl xge_debug(module, level, fmt); 174a23fd118Syl } 175a23fd118Syl #else /* __GNUC__ */ 176a23fd118Syl #define xge_debug_stats(level, fmt...) \ 177a23fd118Syl xge_debug(XGE_COMPONENT_HAL_STATS, level, fmt) 178a23fd118Syl #endif /* __GNUC__ */ 179a23fd118Syl #else 180a23fd118Syl #ifndef __GNUC__ 181a23fd118Syl static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {} 182a23fd118Syl #else /* __GNUC__ */ 183a23fd118Syl #define xge_debug_stats(level, fmt...) 184a23fd118Syl #endif /* __GNUC__ */ 185a23fd118Syl #endif 186a23fd118Syl 187a23fd118Syl #if (XGE_COMPONENT_HAL_QUEUE & XGE_DEBUG_MODULE_MASK) 188a23fd118Syl #ifndef __GNUC__ 189a23fd118Syl static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) { 190a23fd118Syl u32 module = XGE_COMPONENT_HAL_QUEUE; 191a23fd118Syl xge_debug(module, level, fmt); 192a23fd118Syl } 193a23fd118Syl #else /* __GNUC__ */ 194a23fd118Syl #define xge_debug_queue(level, fmt...) \ 195a23fd118Syl xge_debug(XGE_COMPONENT_HAL_QUEUE, level, fmt) 196a23fd118Syl #endif /* __GNUC__ */ 197a23fd118Syl #else 198a23fd118Syl #ifndef __GNUC__ 199a23fd118Syl static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, 200a23fd118Syl ...) {} 201a23fd118Syl #else /* __GNUC__ */ 202a23fd118Syl #define xge_debug_queue(level, fmt...) 203a23fd118Syl #endif /* __GNUC__ */ 204a23fd118Syl #endif 205a23fd118Syl 206a23fd118Syl #if (XGE_COMPONENT_HAL_MM & XGE_DEBUG_MODULE_MASK) 207a23fd118Syl #ifndef __GNUC__ 208a23fd118Syl static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...) 209a23fd118Syl { 210a23fd118Syl u32 module = XGE_COMPONENT_HAL_MM; 211a23fd118Syl xge_debug(module, level, fmt); 212a23fd118Syl } 213a23fd118Syl #else /* __GNUC__ */ 214a23fd118Syl #define xge_debug_mm(level, fmt...) \ 215a23fd118Syl xge_debug(XGE_COMPONENT_HAL_MM, level, fmt) 216a23fd118Syl #endif /* __GNUC__ */ 217a23fd118Syl #else 218a23fd118Syl #ifndef __GNUC__ 219a23fd118Syl static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...) 220a23fd118Syl {} 221a23fd118Syl #else /* __GNUC__ */ 222a23fd118Syl #define xge_debug_mm(level, fmt...) 223a23fd118Syl #endif /* __GNUC__ */ 224a23fd118Syl #endif 225a23fd118Syl 226a23fd118Syl #if (XGE_COMPONENT_HAL_CONFIG & XGE_DEBUG_MODULE_MASK) 227a23fd118Syl #ifndef __GNUC__ 228a23fd118Syl static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) { 229a23fd118Syl u32 module = XGE_COMPONENT_HAL_CONFIG; 230a23fd118Syl xge_debug(module, level, fmt); 231a23fd118Syl } 232a23fd118Syl #else /* __GNUC__ */ 233a23fd118Syl #define xge_debug_config(level, fmt...) \ 234a23fd118Syl xge_debug(XGE_COMPONENT_HAL_CONFIG, level, fmt) 235a23fd118Syl #endif /* __GNUC__ */ 236a23fd118Syl #else 237a23fd118Syl #ifndef __GNUC__ 238a23fd118Syl static inline void xge_debug_config(xge_debug_level_e level, char *fmt, 239a23fd118Syl ...) {} 240a23fd118Syl #else /* __GNUC__ */ 241a23fd118Syl #define xge_debug_config(level, fmt...) 242a23fd118Syl #endif /* __GNUC__ */ 243a23fd118Syl #endif 244a23fd118Syl 245a23fd118Syl #if (XGE_COMPONENT_HAL_FIFO & XGE_DEBUG_MODULE_MASK) 246a23fd118Syl #ifndef __GNUC__ 247a23fd118Syl static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) { 248a23fd118Syl u32 module = XGE_COMPONENT_HAL_FIFO; 249a23fd118Syl xge_debug(module, level, fmt); 250a23fd118Syl } 251a23fd118Syl #else /* __GNUC__ */ 252a23fd118Syl #define xge_debug_fifo(level, fmt...) \ 253a23fd118Syl xge_debug(XGE_COMPONENT_HAL_FIFO, level, fmt) 254a23fd118Syl #endif /* __GNUC__ */ 255a23fd118Syl #else 256a23fd118Syl #ifndef __GNUC__ 257a23fd118Syl static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {} 258a23fd118Syl #else /* __GNUC__ */ 259a23fd118Syl #define xge_debug_fifo(level, fmt...) 260a23fd118Syl #endif /* __GNUC__ */ 261a23fd118Syl #endif 262a23fd118Syl 263a23fd118Syl #if (XGE_COMPONENT_HAL_RING & XGE_DEBUG_MODULE_MASK) 264a23fd118Syl #ifndef __GNUC__ 265a23fd118Syl static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) { 266a23fd118Syl u32 module = XGE_COMPONENT_HAL_RING; 267a23fd118Syl xge_debug(module, level, fmt); 268a23fd118Syl } 269a23fd118Syl #else /* __GNUC__ */ 270a23fd118Syl #define xge_debug_ring(level, fmt...) \ 271a23fd118Syl xge_debug(XGE_COMPONENT_HAL_RING, level, fmt) 272a23fd118Syl #endif /* __GNUC__ */ 273a23fd118Syl #else 274a23fd118Syl #ifndef __GNUC__ 275a23fd118Syl static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {} 276a23fd118Syl #else /* __GNUC__ */ 277a23fd118Syl #define xge_debug_ring(level, fmt...) 278a23fd118Syl #endif /* __GNUC__ */ 279a23fd118Syl #endif 280a23fd118Syl 281a23fd118Syl #if (XGE_COMPONENT_HAL_CHANNEL & XGE_DEBUG_MODULE_MASK) 282a23fd118Syl #ifndef __GNUC__ 283a23fd118Syl static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) { 284a23fd118Syl u32 module = XGE_COMPONENT_HAL_CHANNEL; 285a23fd118Syl xge_debug(module, level, fmt); 286a23fd118Syl } 287a23fd118Syl #else /* __GNUC__ */ 288a23fd118Syl #define xge_debug_channel(level, fmt...) \ 289a23fd118Syl xge_debug(XGE_COMPONENT_HAL_CHANNEL, level, fmt) 290a23fd118Syl #endif /* __GNUC__ */ 291a23fd118Syl #else 292a23fd118Syl #ifndef __GNUC__ 293a23fd118Syl static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {} 294a23fd118Syl #else /* __GNUC__ */ 295a23fd118Syl #define xge_debug_channel(level, fmt...) 296a23fd118Syl #endif /* __GNUC__ */ 297a23fd118Syl #endif 298a23fd118Syl 299a23fd118Syl #if (XGE_COMPONENT_HAL_DEVICE & XGE_DEBUG_MODULE_MASK) 300a23fd118Syl #ifndef __GNUC__ 301a23fd118Syl static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) { 302a23fd118Syl u32 module = XGE_COMPONENT_HAL_DEVICE; 303a23fd118Syl xge_debug(module, level, fmt); 304a23fd118Syl } 305a23fd118Syl #else /* __GNUC__ */ 306a23fd118Syl #define xge_debug_device(level, fmt...) \ 307a23fd118Syl xge_debug(XGE_COMPONENT_HAL_DEVICE, level, fmt) 308a23fd118Syl #endif /* __GNUC__ */ 309a23fd118Syl #else 310a23fd118Syl #ifndef __GNUC__ 311a23fd118Syl static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {} 312a23fd118Syl #else /* __GNUC__ */ 313a23fd118Syl #define xge_debug_device(level, fmt...) 314a23fd118Syl #endif /* __GNUC__ */ 315a23fd118Syl #endif 316a23fd118Syl 317*8347601bSyl #ifdef XGEHAL_RNIC 318*8347601bSyl 319*8347601bSyl #if (XGE_COMPONENT_HAL_DMQ & XGE_DEBUG_MODULE_MASK) 320*8347601bSyl #ifndef __GNUC__ 321*8347601bSyl static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) { 322*8347601bSyl u32 module = XGE_COMPONENT_HAL_DMQ; 323*8347601bSyl xge_debug(module, level, fmt); 324*8347601bSyl } 325*8347601bSyl #else /* __GNUC__ */ 326*8347601bSyl #define xge_debug_dmq(level, fmt...) \ 327*8347601bSyl xge_debug(XGE_COMPONENT_HAL_DMQ, level, fmt) 328*8347601bSyl #endif /* __GNUC__ */ 329*8347601bSyl #else 330*8347601bSyl #ifndef __GNUC__ 331*8347601bSyl static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {} 332*8347601bSyl #else /* __GNUC__ */ 333*8347601bSyl #define xge_debug_dmq(level, fmt...) 334*8347601bSyl #endif /* __GNUC__ */ 335*8347601bSyl #endif 336*8347601bSyl 337*8347601bSyl #if (XGE_COMPONENT_HAL_UMQ & XGE_DEBUG_MODULE_MASK) 338*8347601bSyl #ifndef __GNUC__ 339*8347601bSyl static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) { 340*8347601bSyl u32 module = XGE_COMPONENT_HAL_UMQ; 341*8347601bSyl xge_debug(module, level, fmt); 342*8347601bSyl } 343*8347601bSyl #else /* __GNUC__ */ 344*8347601bSyl #define xge_debug_umq(level, fmt...) \ 345*8347601bSyl xge_debug(XGE_COMPONENT_HAL_UMQ, level, fmt) 346*8347601bSyl #endif /* __GNUC__ */ 347*8347601bSyl #else 348*8347601bSyl #ifndef __GNUC__ 349*8347601bSyl static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {} 350*8347601bSyl #else /* __GNUC__ */ 351*8347601bSyl #define xge_debug_umq(level, fmt...) 352*8347601bSyl #endif /* __GNUC__ */ 353*8347601bSyl #endif 354*8347601bSyl 355*8347601bSyl #if (XGE_COMPONENT_HAL_SQ & XGE_DEBUG_MODULE_MASK) 356*8347601bSyl #ifndef __GNUC__ 357*8347601bSyl static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) { 358*8347601bSyl u32 module = XGE_COMPONENT_HAL_SQ; 359*8347601bSyl xge_debug(module, level, fmt); 360*8347601bSyl } 361*8347601bSyl #else /* __GNUC__ */ 362*8347601bSyl #define xge_debug_sq(level, fmt...) \ 363*8347601bSyl xge_debug(XGE_COMPONENT_HAL_SQ, level, fmt) 364*8347601bSyl #endif /* __GNUC__ */ 365*8347601bSyl #else 366*8347601bSyl #ifndef __GNUC__ 367*8347601bSyl static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {} 368*8347601bSyl #else /* __GNUC__ */ 369*8347601bSyl #define xge_debug_sq(level, fmt...) 370*8347601bSyl #endif /* __GNUC__ */ 371*8347601bSyl #endif 372*8347601bSyl 373*8347601bSyl #if (XGE_COMPONENT_HAL_SRQ & XGE_DEBUG_MODULE_MASK) 374*8347601bSyl #ifndef __GNUC__ 375*8347601bSyl static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) { 376*8347601bSyl u32 module = XGE_COMPONENT_HAL_SRQ; 377*8347601bSyl xge_debug(module, level, fmt); 378*8347601bSyl } 379*8347601bSyl #else /* __GNUC__ */ 380*8347601bSyl #define xge_debug_srq(level, fmt...) \ 381*8347601bSyl xge_debug(XGE_COMPONENT_HAL_SRQ, level, fmt) 382*8347601bSyl #endif /* __GNUC__ */ 383*8347601bSyl #else 384*8347601bSyl #ifndef __GNUC__ 385*8347601bSyl static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {} 386*8347601bSyl #else /* __GNUC__ */ 387*8347601bSyl #define xge_debug_srq(level, fmt...) 388*8347601bSyl #endif /* __GNUC__ */ 389*8347601bSyl #endif 390*8347601bSyl 391*8347601bSyl #if (XGE_COMPONENT_HAL_CQRQ & XGE_DEBUG_MODULE_MASK) 392*8347601bSyl #ifndef __GNUC__ 393*8347601bSyl static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) { 394*8347601bSyl u32 module = XGE_COMPONENT_HAL_CQRQ; 395*8347601bSyl xge_debug(module, level, fmt); 396*8347601bSyl } 397*8347601bSyl #else /* __GNUC__ */ 398*8347601bSyl #define xge_debug_cqrq(level, fmt...) \ 399*8347601bSyl xge_debug(XGE_COMPONENT_HAL_CQRQ, level, fmt) 400*8347601bSyl #endif /* __GNUC__ */ 401*8347601bSyl #else 402*8347601bSyl #ifndef __GNUC__ 403*8347601bSyl static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {} 404*8347601bSyl #else /* __GNUC__ */ 405*8347601bSyl #define xge_debug_cqrq(level, fmt...) 406*8347601bSyl #endif /* __GNUC__ */ 407*8347601bSyl #endif 408*8347601bSyl 409*8347601bSyl #if (XGE_COMPONENT_HAL_LRQ & XGE_DEBUG_MODULE_MASK) 410*8347601bSyl #ifndef __GNUC__ 411*8347601bSyl static inline void xge_debug_lrq(xge_debug_level_e level, char *fmt, ...) { 412*8347601bSyl u32 module = XGE_COMPONENT_HAL_LRQ; 413*8347601bSyl xge_debug(module, level, fmt); 414*8347601bSyl } 415*8347601bSyl #else /* __GNUC__ */ 416*8347601bSyl #define xge_debug_lrq(level, fmt...) \ 417*8347601bSyl xge_debug(XGE_COMPONENT_HAL_LRQ, level, fmt) 418*8347601bSyl #endif /* __GNUC__ */ 419*8347601bSyl #else 420*8347601bSyl #ifndef __GNUC__ 421*8347601bSyl static inline void xge_debug_lrq(xge_debug_level_e level, char *fmt, ...) {} 422*8347601bSyl #else /* __GNUC__ */ 423*8347601bSyl #define xge_debug_lrq(level, fmt...) 424*8347601bSyl #endif /* __GNUC__ */ 425*8347601bSyl #endif 426*8347601bSyl 427*8347601bSyl #if (XGE_COMPONENT_HAL_LCQ & XGE_DEBUG_MODULE_MASK) 428*8347601bSyl #ifndef __GNUC__ 429*8347601bSyl static inline void xge_debug_lcq(xge_debug_level_e level, char *fmt, ...) { 430*8347601bSyl u32 module = XGE_COMPONENT_HAL_LCQ; 431*8347601bSyl xge_debug(module, level, fmt); 432*8347601bSyl } 433*8347601bSyl #else /* __GNUC__ */ 434*8347601bSyl #define xge_debug_lcq(level, fmt...) \ 435*8347601bSyl xge_debug(XGE_COMPONENT_HAL_LCQ, level, fmt) 436*8347601bSyl #endif /* __GNUC__ */ 437*8347601bSyl #else 438*8347601bSyl #ifndef __GNUC__ 439*8347601bSyl static inline void xge_debug_lcq(xge_debug_level_e level, char *fmt, ...) {} 440*8347601bSyl #else /* __GNUC__ */ 441*8347601bSyl #define xge_debug_lcq(level, fmt...) 442*8347601bSyl #endif /* __GNUC__ */ 443*8347601bSyl #endif 444*8347601bSyl 445*8347601bSyl #if (XGE_COMPONENT_HAL_POOL & XGE_DEBUG_MODULE_MASK) 446*8347601bSyl #ifndef __GNUC__ 447*8347601bSyl static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) { 448*8347601bSyl u32 module = XGE_COMPONENT_HAL_POOL; 449*8347601bSyl xge_debug(module, level, fmt); 450*8347601bSyl } 451*8347601bSyl #else /* __GNUC__ */ 452*8347601bSyl #define xge_debug_pool(level, fmt...) \ 453*8347601bSyl xge_debug(XGE_COMPONENT_HAL_POOL, level, fmt) 454*8347601bSyl #endif /* __GNUC__ */ 455*8347601bSyl #else 456*8347601bSyl #ifndef __GNUC__ 457*8347601bSyl static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {} 458*8347601bSyl #else /* __GNUC__ */ 459*8347601bSyl #define xge_debug_pool(level, fmt...) 460*8347601bSyl #endif /* __GNUC__ */ 461*8347601bSyl #endif 462*8347601bSyl 463*8347601bSyl #endif 464*8347601bSyl 465a23fd118Syl #if (XGE_COMPONENT_OSDEP & XGE_DEBUG_MODULE_MASK) 466a23fd118Syl #ifndef __GNUC__ 467a23fd118Syl static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) { 468a23fd118Syl u32 module = XGE_COMPONENT_OSDEP; 469a23fd118Syl xge_debug(module, level, fmt); 470a23fd118Syl } 471a23fd118Syl #else /* __GNUC__ */ 472a23fd118Syl #define xge_debug_osdep(level, fmt...) \ 473a23fd118Syl xge_debug(XGE_COMPONENT_OSDEP, level, fmt) 474a23fd118Syl #endif /* __GNUC__ */ 475a23fd118Syl #else 476a23fd118Syl #ifndef __GNUC__ 477a23fd118Syl static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {} 478a23fd118Syl #else /* __GNUC__ */ 479a23fd118Syl #define xge_debug_osdep(level, fmt...) 480a23fd118Syl #endif /* __GNUC__ */ 481a23fd118Syl #endif 482a23fd118Syl 483a23fd118Syl #if (XGE_COMPONENT_LL & XGE_DEBUG_MODULE_MASK) 484a23fd118Syl #ifndef __GNUC__ 485a23fd118Syl static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) 486a23fd118Syl { 487a23fd118Syl u32 module = XGE_COMPONENT_LL; 488a23fd118Syl xge_debug(module, level, fmt); 489a23fd118Syl } 490a23fd118Syl #else /* __GNUC__ */ 491a23fd118Syl #define xge_debug_ll(level, fmt...) \ 492a23fd118Syl xge_debug(XGE_COMPONENT_LL, level, fmt) 493a23fd118Syl #endif /* __GNUC__ */ 494a23fd118Syl #else 495a23fd118Syl #ifndef __GNUC__ 496a23fd118Syl static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {} 497a23fd118Syl #else /* __GNUC__ */ 498a23fd118Syl #define xge_debug_ll(level, fmt...) 499a23fd118Syl #endif /* __GNUC__ */ 500a23fd118Syl #endif 501a23fd118Syl 502a23fd118Syl #else 503a23fd118Syl 504a23fd118Syl static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {} 505a23fd118Syl static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) {} 506a23fd118Syl static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...) {} 507a23fd118Syl static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) {} 508a23fd118Syl static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {} 509a23fd118Syl static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {} 510a23fd118Syl static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {} 511a23fd118Syl static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {} 512*8347601bSyl static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {} 513*8347601bSyl static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {} 514*8347601bSyl static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {} 515*8347601bSyl static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {} 516*8347601bSyl static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {} 517*8347601bSyl static inline void xge_debug_lrq(xge_debug_level_e level, char *fmt, ...) {} 518*8347601bSyl static inline void xge_debug_lcq(xge_debug_level_e level, char *fmt, ...) {} 519*8347601bSyl static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {} 520a23fd118Syl static inline void xge_debug_hal(xge_debug_level_e level, char *fmt, ...) {} 521a23fd118Syl static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {} 522a23fd118Syl static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {} 523a23fd118Syl 524a23fd118Syl #endif /* end of XGE_DEBUG_*_MASK */ 525a23fd118Syl 526a23fd118Syl #ifdef XGE_DEBUG_ASSERT 527a23fd118Syl 528a23fd118Syl /** 529a23fd118Syl * xge_assert 530a23fd118Syl * @test: C-condition to check 531a23fd118Syl * @fmt: printf like format string 532a23fd118Syl * 533a23fd118Syl * This function implements traditional assert. By default assertions 534a23fd118Syl * are enabled. It can be disabled by defining XGE_DEBUG_ASSERT macro in 535a23fd118Syl * compilation 536a23fd118Syl * time. 537a23fd118Syl */ 538a23fd118Syl #define xge_assert(test) { \ 539a23fd118Syl if (!(test)) xge_os_bug("bad cond: "#test" at %s:%d\n", \ 540a23fd118Syl __FILE__, __LINE__); } 541a23fd118Syl #else 542a23fd118Syl #define xge_assert(test) 543a23fd118Syl #endif /* end of XGE_DEBUG_ASSERT */ 544a23fd118Syl 545*8347601bSyl __EXTERN_END_DECLS 546*8347601bSyl 547a23fd118Syl #endif /* XGE_DEBUG_H */ 548