xref: /onnv-gate/usr/src/uts/common/io/xge/hal/include/xge-debug.h (revision 6937:a5e2c8b5c817)
11256Syl150051 /*
21256Syl150051  * CDDL HEADER START
31256Syl150051  *
41256Syl150051  * The contents of this file are subject to the terms of the
51256Syl150051  * Common Development and Distribution License (the "License").
61256Syl150051  * You may not use this file except in compliance with the License.
71256Syl150051  *
81256Syl150051  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
91256Syl150051  * or http://www.opensolaris.org/os/licensing.
101256Syl150051  * See the License for the specific language governing permissions
111256Syl150051  * and limitations under the License.
121256Syl150051  *
131256Syl150051  * When distributing Covered Code, include this CDDL HEADER in each
141256Syl150051  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
151256Syl150051  * If applicable, add the following below this CDDL HEADER, with the
161256Syl150051  * fields enclosed by brackets "[]" replaced with your own identifying
171256Syl150051  * information: Portions Copyright [yyyy] [name of copyright owner]
181256Syl150051  *
191256Syl150051  * CDDL HEADER END
201256Syl150051  *
213115Syl150051  * Copyright (c) 2002-2006 Neterion, Inc.
221256Syl150051  */
231256Syl150051 
241256Syl150051 #ifndef XGE_DEBUG_H
251256Syl150051 #define XGE_DEBUG_H
261256Syl150051 
271256Syl150051 #include "xge-os-pal.h"
281256Syl150051 
293115Syl150051 __EXTERN_BEGIN_DECLS
303115Syl150051 
31*6937Sxw161283 /*
32*6937Sxw161283  * __FUNCTION__ is, together with __PRETTY_FUNCTION__ or something similar,
33*6937Sxw161283  * a gcc extension. we'll have to #ifdef around that, and provide some
34*6937Sxw161283  * meaningful replacement for those, so to make some gcc versions happier
35*6937Sxw161283  */
361256Syl150051 #ifndef __func__
37*6937Sxw161283 #ifdef __FUNCTION__
381256Syl150051 #define __func__ __FUNCTION__
391256Syl150051 #endif
40*6937Sxw161283 #endif
41*6937Sxw161283 
421256Syl150051 
431256Syl150051 #ifdef XGE_DEBUG_FP
441256Syl150051 #define XGE_DEBUG_FP_DEVICE	0x1
451256Syl150051 #define XGE_DEBUG_FP_CHANNEL	0x2
461256Syl150051 #define XGE_DEBUG_FP_FIFO	0x4
471256Syl150051 #define XGE_DEBUG_FP_RING	0x8
481256Syl150051 #endif
491256Syl150051 
501256Syl150051 /**
511256Syl150051  * enum xge_debug_level_e
521256Syl150051  * @XGE_NONE: debug disabled
531256Syl150051  * @XGE_ERR: all errors going to be logged out
541256Syl150051  * @XGE_TRACE: all errors plus all kind of verbose tracing print outs
551256Syl150051  *                 going to be logged out. Very noisy.
561256Syl150051  *
571256Syl150051  * This enumeration going to be used to switch between different
581256Syl150051  * debug levels during runtime if DEBUG macro defined during
591256Syl150051  * compilation. If DEBUG macro not defined than code will be
601256Syl150051  * compiled out.
611256Syl150051  */
621256Syl150051 typedef enum xge_debug_level_e {
631256Syl150051 	XGE_NONE   = 0,
641256Syl150051 	XGE_TRACE  = 1,
651256Syl150051 	XGE_ERR    = 2,
661256Syl150051 } xge_debug_level_e;
671256Syl150051 
68*6937Sxw161283 #define XGE_DEBUG_MODULE_MASK_DEF	0x30000030
691256Syl150051 #define XGE_DEBUG_LEVEL_DEF		XGE_ERR
701256Syl150051 
711256Syl150051 #if defined(XGE_DEBUG_TRACE_MASK) || defined(XGE_DEBUG_ERR_MASK)
721256Syl150051 
73*6937Sxw161283 extern unsigned long *g_module_mask;
741256Syl150051 extern int *g_level;
751256Syl150051 
761256Syl150051 #ifndef XGE_DEBUG_TRACE_MASK
771256Syl150051 #define XGE_DEBUG_TRACE_MASK 0
781256Syl150051 #endif
791256Syl150051 
801256Syl150051 #ifndef XGE_DEBUG_ERR_MASK
811256Syl150051 #define XGE_DEBUG_ERR_MASK 0
821256Syl150051 #endif
831256Syl150051 
841256Syl150051 /*
851256Syl150051  * @XGE_COMPONENT_HAL_CONFIG: do debug for xge core config module
861256Syl150051  * @XGE_COMPONENT_HAL_FIFO: do debug for xge core fifo module
871256Syl150051  * @XGE_COMPONENT_HAL_RING: do debug for xge core ring module
881256Syl150051  * @XGE_COMPONENT_HAL_CHANNEL: do debug for xge core channel module
891256Syl150051  * @XGE_COMPONENT_HAL_DEVICE: do debug for xge core device module
903115Syl150051  * @XGE_COMPONENT_HAL_DMQ: do debug for xge core DMQ module
913115Syl150051  * @XGE_COMPONENT_HAL_UMQ: do debug for xge core UMQ module
923115Syl150051  * @XGE_COMPONENT_HAL_SQ: do debug for xge core SQ module
933115Syl150051  * @XGE_COMPONENT_HAL_SRQ: do debug for xge core SRQ module
94*6937Sxw161283  * @XGE_COMPONENT_HAL_CQRQ: do debug for xge core CRQ module
95*6937Sxw161283  * @XGE_COMPONENT_HAL_POOL: do debug for xge core memory pool module
96*6937Sxw161283  * @XGE_COMPONENT_HAL_BITMAP: do debug for xge core BITMAP module
971256Syl150051  * @XGE_COMPONENT_CORE: do debug for xge KMA core module
981256Syl150051  * @XGE_COMPONENT_OSDEP: do debug for xge KMA os dependent parts
991256Syl150051  * @XGE_COMPONENT_LL: do debug for xge link layer module
1001256Syl150051  * @XGE_COMPONENT_ALL: activate debug for all modules with no exceptions
1011256Syl150051  *
1021256Syl150051  * This enumeration going to be used to distinguish modules
1031256Syl150051  * or libraries during compilation and runtime.  Makefile must declare
1041256Syl150051  * XGE_DEBUG_MODULE_MASK macro and set it to proper value.
1051256Syl150051  */
1063115Syl150051 #define XGE_COMPONENT_HAL_CONFIG		0x00000001
1073115Syl150051 #define	XGE_COMPONENT_HAL_FIFO			0x00000002
1083115Syl150051 #define	XGE_COMPONENT_HAL_RING			0x00000004
1093115Syl150051 #define	XGE_COMPONENT_HAL_CHANNEL		0x00000008
1103115Syl150051 #define	XGE_COMPONENT_HAL_DEVICE		0x00000010
1113115Syl150051 #define	XGE_COMPONENT_HAL_MM			0x00000020
112*6937Sxw161283 #define	XGE_COMPONENT_HAL_QUEUE	        0x00000040
113*6937Sxw161283 #define	XGE_COMPONENT_HAL_INTERRUPT     0x00000080
114*6937Sxw161283 #define	XGE_COMPONENT_HAL_STATS	        0x00000100
1153115Syl150051 
1161256Syl150051 	/* space for CORE_XXX */
1173115Syl150051 #define	XGE_COMPONENT_OSDEP			0x10000000
1183115Syl150051 #define	XGE_COMPONENT_LL			0x20000000
1191256Syl150051 #define	XGE_COMPONENT_ALL			0xffffffff
1201256Syl150051 
1211256Syl150051 #ifndef XGE_DEBUG_MODULE_MASK
1221256Syl150051 #error "XGE_DEBUG_MODULE_MASK macro must be defined for DEBUG mode..."
1231256Syl150051 #endif
1241256Syl150051 
1251256Syl150051 #ifndef __GNUC__
1261256Syl150051 #ifdef XGE_TRACE_INTO_CIRCULAR_ARR
1271256Syl150051         #define xge_trace_aux(fmt) xge_os_vatrace(g_xge_os_tracebuf, fmt)
1281256Syl150051 #else
1291256Syl150051         #define xge_trace_aux(fmt) xge_os_vaprintf(fmt)
1301256Syl150051 #endif
1311256Syl150051 
1321256Syl150051 /**
1331256Syl150051  * xge_debug
1341256Syl150051  * @level: level of debug verbosity.
1351256Syl150051  * @fmt: printf like format string
1361256Syl150051  *
1371256Syl150051  * Provides logging facilities. Can be customized on per-module
1381256Syl150051  * basis or/and with debug levels. Input parameters, except
1391256Syl150051  * module and level, are the same as posix printf. This function
1401256Syl150051  * may be compiled out if DEBUG macro was never defined.
1411256Syl150051  * See also: xge_debug_level_e{}.
1421256Syl150051  */
1431256Syl150051 #define xge_debug(module, level, fmt) { \
1441256Syl150051 if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \
1451256Syl150051     (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \
146*6937Sxw161283     level >= *g_level && module & *(unsigned int *)g_module_mask) { \
1471256Syl150051                 xge_trace_aux(fmt); \
1481256Syl150051 	} \
1491256Syl150051 }
1501256Syl150051 #else /* __GNUC__ */
1511256Syl150051 
1521256Syl150051 #ifdef XGE_TRACE_INTO_CIRCULAR_ARR
1531256Syl150051         #define xge_trace_aux(fmt...) xge_os_trace(g_xge_os_tracebuf, fmt)
1541256Syl150051 #else
1551256Syl150051         #define xge_trace_aux(fmt...) xge_os_printf(fmt)
1561256Syl150051 #endif
1571256Syl150051 
1581256Syl150051 #define xge_debug(module, level, fmt...) { \
1591256Syl150051 if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \
1601256Syl150051     (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \
161*6937Sxw161283     level >= *g_level && module & *(unsigned int *)g_module_mask) { \
1621256Syl150051                 xge_trace_aux(fmt); \
1631256Syl150051 	} \
1641256Syl150051 }
1651256Syl150051 #endif /* __GNUC__ */
1661256Syl150051 
1671256Syl150051 #if (XGE_COMPONENT_HAL_STATS & XGE_DEBUG_MODULE_MASK)
1681256Syl150051 #ifndef __GNUC__
xge_debug_stats(xge_debug_level_e level,char * fmt,...)1691256Syl150051 static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {
1701256Syl150051 	u32 module = XGE_COMPONENT_HAL_STATS;
1711256Syl150051 	xge_debug(module, level, fmt);
1721256Syl150051 }
1731256Syl150051 #else /* __GNUC__ */
1741256Syl150051 #define xge_debug_stats(level, fmt...) \
1751256Syl150051 	xge_debug(XGE_COMPONENT_HAL_STATS, level, fmt)
1761256Syl150051 #endif /* __GNUC__ */
1771256Syl150051 #else
1781256Syl150051 #ifndef __GNUC__
xge_debug_stats(xge_debug_level_e level,char * fmt,...)1791256Syl150051 static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {}
1801256Syl150051 #else /* __GNUC__ */
1811256Syl150051 #define xge_debug_stats(level, fmt...)
1821256Syl150051 #endif /* __GNUC__ */
1831256Syl150051 #endif
1841256Syl150051 
185*6937Sxw161283 /* Interrupt Related */
186*6937Sxw161283 #if (XGE_COMPONENT_HAL_INTERRUPT & XGE_DEBUG_MODULE_MASK)
187*6937Sxw161283 #ifndef __GNUC__
xge_debug_interrupt(xge_debug_level_e level,char * fmt,...)188*6937Sxw161283 static inline void xge_debug_interrupt(xge_debug_level_e level, char *fmt, ...) {
189*6937Sxw161283 	u32 module = XGE_COMPONENT_HAL_INTERRUPT;
190*6937Sxw161283 	xge_debug(module, level, fmt);
191*6937Sxw161283 }
192*6937Sxw161283 #else /* __GNUC__ */
193*6937Sxw161283 #define xge_debug_interrupt(level, fmt...) \
194*6937Sxw161283 	xge_debug(XGE_COMPONENT_HAL_INTERRUPT, level, fmt)
195*6937Sxw161283 #endif /* __GNUC__ */
196*6937Sxw161283 #else
197*6937Sxw161283 #ifndef __GNUC__
xge_debug_interrupt(xge_debug_level_e level,char * fmt,...)198*6937Sxw161283 static inline void xge_debug_interrupt(xge_debug_level_e level, char *fmt, ...) {}
199*6937Sxw161283 #else /* __GNUC__ */
200*6937Sxw161283 #define xge_debug_interrupt(level, fmt...)
201*6937Sxw161283 #endif /* __GNUC__ */
202*6937Sxw161283 #endif
203*6937Sxw161283 
2041256Syl150051 #if (XGE_COMPONENT_HAL_QUEUE & XGE_DEBUG_MODULE_MASK)
2051256Syl150051 #ifndef __GNUC__
xge_debug_queue(xge_debug_level_e level,char * fmt,...)2061256Syl150051 static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) {
2071256Syl150051 	u32 module = XGE_COMPONENT_HAL_QUEUE;
2081256Syl150051 	xge_debug(module, level, fmt);
2091256Syl150051 }
2101256Syl150051 #else /* __GNUC__ */
2111256Syl150051 #define xge_debug_queue(level, fmt...) \
2121256Syl150051 	xge_debug(XGE_COMPONENT_HAL_QUEUE, level, fmt)
2131256Syl150051 #endif /* __GNUC__ */
2141256Syl150051 #else
2151256Syl150051 #ifndef __GNUC__
xge_debug_queue(xge_debug_level_e level,char * fmt,...)2161256Syl150051 static inline void xge_debug_queue(xge_debug_level_e level, char *fmt,
2171256Syl150051 ...) {}
2181256Syl150051 #else /* __GNUC__ */
2191256Syl150051 #define xge_debug_queue(level, fmt...)
2201256Syl150051 #endif /* __GNUC__ */
2211256Syl150051 #endif
2221256Syl150051 
2231256Syl150051 #if (XGE_COMPONENT_HAL_MM & XGE_DEBUG_MODULE_MASK)
2241256Syl150051 #ifndef __GNUC__
xge_debug_mm(xge_debug_level_e level,char * fmt,...)2251256Syl150051 static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...)
2261256Syl150051 {
2271256Syl150051 	u32 module = XGE_COMPONENT_HAL_MM;
2281256Syl150051 	xge_debug(module, level, fmt);
2291256Syl150051 }
2301256Syl150051 #else /* __GNUC__ */
2311256Syl150051 #define xge_debug_mm(level, fmt...) \
2321256Syl150051 	xge_debug(XGE_COMPONENT_HAL_MM, level, fmt)
2331256Syl150051 #endif /* __GNUC__ */
2341256Syl150051 #else
2351256Syl150051 #ifndef __GNUC__
xge_debug_mm(xge_debug_level_e level,char * fmt,...)2361256Syl150051 static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...)
2371256Syl150051 {}
2381256Syl150051 #else /* __GNUC__ */
2391256Syl150051 #define xge_debug_mm(level, fmt...)
2401256Syl150051 #endif /* __GNUC__ */
2411256Syl150051 #endif
2421256Syl150051 
2431256Syl150051 #if (XGE_COMPONENT_HAL_CONFIG & XGE_DEBUG_MODULE_MASK)
2441256Syl150051 #ifndef __GNUC__
xge_debug_config(xge_debug_level_e level,char * fmt,...)2451256Syl150051 static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) {
2461256Syl150051 	u32 module = XGE_COMPONENT_HAL_CONFIG;
2471256Syl150051 	xge_debug(module, level, fmt);
2481256Syl150051 }
2491256Syl150051 #else /* __GNUC__ */
2501256Syl150051 #define xge_debug_config(level, fmt...) \
2511256Syl150051 	xge_debug(XGE_COMPONENT_HAL_CONFIG, level, fmt)
2521256Syl150051 #endif /* __GNUC__ */
2531256Syl150051 #else
2541256Syl150051 #ifndef __GNUC__
xge_debug_config(xge_debug_level_e level,char * fmt,...)2551256Syl150051 static inline void xge_debug_config(xge_debug_level_e level, char *fmt,
2561256Syl150051 ...) {}
2571256Syl150051 #else /* __GNUC__ */
2581256Syl150051 #define xge_debug_config(level, fmt...)
2591256Syl150051 #endif /* __GNUC__ */
2601256Syl150051 #endif
2611256Syl150051 
2621256Syl150051 #if (XGE_COMPONENT_HAL_FIFO & XGE_DEBUG_MODULE_MASK)
2631256Syl150051 #ifndef __GNUC__
xge_debug_fifo(xge_debug_level_e level,char * fmt,...)2641256Syl150051 static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {
2651256Syl150051 	u32 module = XGE_COMPONENT_HAL_FIFO;
2661256Syl150051 	xge_debug(module, level, fmt);
2671256Syl150051 }
2681256Syl150051 #else /* __GNUC__ */
2691256Syl150051 #define xge_debug_fifo(level, fmt...) \
2701256Syl150051 	xge_debug(XGE_COMPONENT_HAL_FIFO, level, fmt)
2711256Syl150051 #endif /* __GNUC__ */
2721256Syl150051 #else
2731256Syl150051 #ifndef __GNUC__
xge_debug_fifo(xge_debug_level_e level,char * fmt,...)2741256Syl150051 static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {}
2751256Syl150051 #else /* __GNUC__ */
2761256Syl150051 #define xge_debug_fifo(level, fmt...)
2771256Syl150051 #endif /* __GNUC__ */
2781256Syl150051 #endif
2791256Syl150051 
2801256Syl150051 #if (XGE_COMPONENT_HAL_RING & XGE_DEBUG_MODULE_MASK)
2811256Syl150051 #ifndef __GNUC__
xge_debug_ring(xge_debug_level_e level,char * fmt,...)2821256Syl150051 static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {
2831256Syl150051 	u32 module = XGE_COMPONENT_HAL_RING;
2841256Syl150051 	xge_debug(module, level, fmt);
2851256Syl150051 }
2861256Syl150051 #else /* __GNUC__ */
2871256Syl150051 #define xge_debug_ring(level, fmt...) \
2881256Syl150051 	xge_debug(XGE_COMPONENT_HAL_RING, level, fmt)
2891256Syl150051 #endif /* __GNUC__ */
2901256Syl150051 #else
2911256Syl150051 #ifndef __GNUC__
xge_debug_ring(xge_debug_level_e level,char * fmt,...)2921256Syl150051 static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {}
2931256Syl150051 #else /* __GNUC__ */
2941256Syl150051 #define xge_debug_ring(level, fmt...)
2951256Syl150051 #endif /* __GNUC__ */
2961256Syl150051 #endif
2971256Syl150051 
2981256Syl150051 #if (XGE_COMPONENT_HAL_CHANNEL & XGE_DEBUG_MODULE_MASK)
2991256Syl150051 #ifndef __GNUC__
xge_debug_channel(xge_debug_level_e level,char * fmt,...)3001256Syl150051 static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {
3011256Syl150051 	u32 module = XGE_COMPONENT_HAL_CHANNEL;
3021256Syl150051 	xge_debug(module, level, fmt);
3031256Syl150051 }
3041256Syl150051 #else /* __GNUC__ */
3051256Syl150051 #define xge_debug_channel(level, fmt...) \
3061256Syl150051 	xge_debug(XGE_COMPONENT_HAL_CHANNEL, level, fmt)
3071256Syl150051 #endif /* __GNUC__ */
3081256Syl150051 #else
3091256Syl150051 #ifndef __GNUC__
xge_debug_channel(xge_debug_level_e level,char * fmt,...)3101256Syl150051 static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {}
3111256Syl150051 #else /* __GNUC__ */
3121256Syl150051 #define xge_debug_channel(level, fmt...)
3131256Syl150051 #endif /* __GNUC__ */
3141256Syl150051 #endif
3151256Syl150051 
3161256Syl150051 #if (XGE_COMPONENT_HAL_DEVICE & XGE_DEBUG_MODULE_MASK)
3171256Syl150051 #ifndef __GNUC__
xge_debug_device(xge_debug_level_e level,char * fmt,...)3181256Syl150051 static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {
3191256Syl150051 	u32 module = XGE_COMPONENT_HAL_DEVICE;
3201256Syl150051 	xge_debug(module, level, fmt);
3211256Syl150051 }
3221256Syl150051 #else /* __GNUC__ */
3231256Syl150051 #define xge_debug_device(level, fmt...) \
3241256Syl150051 	xge_debug(XGE_COMPONENT_HAL_DEVICE, level, fmt)
3251256Syl150051 #endif /* __GNUC__ */
3261256Syl150051 #else
3271256Syl150051 #ifndef __GNUC__
xge_debug_device(xge_debug_level_e level,char * fmt,...)3281256Syl150051 static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {}
3291256Syl150051 #else /* __GNUC__ */
3301256Syl150051 #define xge_debug_device(level, fmt...)
3311256Syl150051 #endif /* __GNUC__ */
3321256Syl150051 #endif
3331256Syl150051 
3341256Syl150051 #if (XGE_COMPONENT_OSDEP & XGE_DEBUG_MODULE_MASK)
3351256Syl150051 #ifndef __GNUC__
xge_debug_osdep(xge_debug_level_e level,char * fmt,...)3361256Syl150051 static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {
3371256Syl150051 	u32 module = XGE_COMPONENT_OSDEP;
3381256Syl150051 	xge_debug(module, level, fmt);
3391256Syl150051 }
3401256Syl150051 #else /* __GNUC__ */
3411256Syl150051 #define xge_debug_osdep(level, fmt...) \
3421256Syl150051 	xge_debug(XGE_COMPONENT_OSDEP, level, fmt)
3431256Syl150051 #endif /* __GNUC__ */
3441256Syl150051 #else
3451256Syl150051 #ifndef __GNUC__
xge_debug_osdep(xge_debug_level_e level,char * fmt,...)3461256Syl150051 static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {}
3471256Syl150051 #else /* __GNUC__ */
3481256Syl150051 #define xge_debug_osdep(level, fmt...)
3491256Syl150051 #endif /* __GNUC__ */
3501256Syl150051 #endif
3511256Syl150051 
3521256Syl150051 #if (XGE_COMPONENT_LL & XGE_DEBUG_MODULE_MASK)
3531256Syl150051 #ifndef __GNUC__
xge_debug_ll(xge_debug_level_e level,char * fmt,...)3541256Syl150051 static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...)
3551256Syl150051 {
3561256Syl150051 	u32 module = XGE_COMPONENT_LL;
3571256Syl150051 	xge_debug(module, level, fmt);
3581256Syl150051 }
3591256Syl150051 #else /* __GNUC__ */
3601256Syl150051 #define xge_debug_ll(level, fmt...) \
3611256Syl150051 	xge_debug(XGE_COMPONENT_LL, level, fmt)
3621256Syl150051 #endif /* __GNUC__ */
3631256Syl150051 #else
3641256Syl150051 #ifndef __GNUC__
xge_debug_ll(xge_debug_level_e level,char * fmt,...)3651256Syl150051 static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {}
3661256Syl150051 #else /* __GNUC__ */
3671256Syl150051 #define xge_debug_ll(level, fmt...)
3681256Syl150051 #endif /* __GNUC__ */
3691256Syl150051 #endif
3701256Syl150051 
3711256Syl150051 #else
3721256Syl150051 
xge_debug_interrupt(xge_debug_level_e level,char * fmt,...)373*6937Sxw161283 static inline void xge_debug_interrupt(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_stats(xge_debug_level_e level,char * fmt,...)3741256Syl150051 static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_queue(xge_debug_level_e level,char * fmt,...)3751256Syl150051 static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_mm(xge_debug_level_e level,char * fmt,...)3761256Syl150051 static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_config(xge_debug_level_e level,char * fmt,...)3771256Syl150051 static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_fifo(xge_debug_level_e level,char * fmt,...)3781256Syl150051 static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_ring(xge_debug_level_e level,char * fmt,...)3791256Syl150051 static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_channel(xge_debug_level_e level,char * fmt,...)3801256Syl150051 static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_device(xge_debug_level_e level,char * fmt,...)3811256Syl150051 static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_hal(xge_debug_level_e level,char * fmt,...)3821256Syl150051 static inline void xge_debug_hal(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_osdep(xge_debug_level_e level,char * fmt,...)3831256Syl150051 static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {}
xge_debug_ll(xge_debug_level_e level,char * fmt,...)3841256Syl150051 static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {}
3851256Syl150051 
3861256Syl150051 #endif /* end of XGE_DEBUG_*_MASK */
3871256Syl150051 
3881256Syl150051 #ifdef XGE_DEBUG_ASSERT
3891256Syl150051 
3901256Syl150051 /**
3911256Syl150051  * xge_assert
3921256Syl150051  * @test: C-condition to check
3931256Syl150051  * @fmt: printf like format string
3941256Syl150051  *
3951256Syl150051  * This function implements traditional assert. By default assertions
3961256Syl150051  * are enabled. It can be disabled by defining XGE_DEBUG_ASSERT macro in
3971256Syl150051  * compilation
3981256Syl150051  * time.
3991256Syl150051  */
4001256Syl150051 #define xge_assert(test) { \
4011256Syl150051         if (!(test)) xge_os_bug("bad cond: "#test" at %s:%d\n", \
4021256Syl150051 	__FILE__, __LINE__); }
4031256Syl150051 #else
4041256Syl150051 #define xge_assert(test)
4051256Syl150051 #endif /* end of XGE_DEBUG_ASSERT */
4061256Syl150051 
4073115Syl150051 __EXTERN_END_DECLS
4083115Syl150051 
4091256Syl150051 #endif /* XGE_DEBUG_H */
410