xge-debug.h revision 171095
1/*-
2 * Copyright (c) 2002-2007 Neterion, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/dev/nxge/include/xge-debug.h 171095 2007-06-29 22:47:18Z sam $
27 */
28
29/*
30 *  FileName :    xge-debug.h
31 *
32 *  Description:  debug facilities
33 *
34 *  Created:      6 May 2004
35 */
36
37#ifndef XGE_DEBUG_H
38#define XGE_DEBUG_H
39
40#include <dev/nxge/include/xge-os-pal.h>
41
42__EXTERN_BEGIN_DECLS
43
44/*
45 * __FUNCTION__ is, together with __PRETTY_FUNCTION__ or something similar,
46 * a gcc extension. we'll have to #ifdef around that, and provide some
47 * meaningful replacement for those, so to make some gcc versions happier
48 */
49#ifndef __func__
50#ifdef __FUNCTION__
51#define __func__ __FUNCTION__
52#endif
53#endif
54
55
56#ifdef XGE_DEBUG_FP
57#define XGE_DEBUG_FP_DEVICE	0x1
58#define XGE_DEBUG_FP_CHANNEL	0x2
59#define XGE_DEBUG_FP_FIFO	0x4
60#define XGE_DEBUG_FP_RING	0x8
61#endif
62
63/**
64 * enum xge_debug_level_e
65 * @XGE_NONE: debug disabled
66 * @XGE_ERR: all errors going to be logged out
67 * @XGE_TRACE: all errors plus all kind of verbose tracing print outs
68 *                 going to be logged out. Very noisy.
69 *
70 * This enumeration going to be used to switch between different
71 * debug levels during runtime if DEBUG macro defined during
72 * compilation. If DEBUG macro not defined than code will be
73 * compiled out.
74 */
75typedef enum xge_debug_level_e {
76	XGE_NONE   = 0,
77	XGE_TRACE  = 1,
78	XGE_ERR    = 2,
79} xge_debug_level_e;
80
81#define XGE_DEBUG_MODULE_MASK_DEF	0x30000030
82#define XGE_DEBUG_LEVEL_DEF		XGE_ERR
83
84#if defined(XGE_DEBUG_TRACE_MASK) || defined(XGE_DEBUG_ERR_MASK)
85
86extern unsigned long *g_module_mask;
87extern int *g_level;
88
89#ifndef XGE_DEBUG_TRACE_MASK
90#define XGE_DEBUG_TRACE_MASK 0
91#endif
92
93#ifndef XGE_DEBUG_ERR_MASK
94#define XGE_DEBUG_ERR_MASK 0
95#endif
96
97/*
98 * @XGE_COMPONENT_HAL_CONFIG: do debug for xge core config module
99 * @XGE_COMPONENT_HAL_FIFO: do debug for xge core fifo module
100 * @XGE_COMPONENT_HAL_RING: do debug for xge core ring module
101 * @XGE_COMPONENT_HAL_CHANNEL: do debug for xge core channel module
102 * @XGE_COMPONENT_HAL_DEVICE: do debug for xge core device module
103 * @XGE_COMPONENT_HAL_DMQ: do debug for xge core DMQ module
104 * @XGE_COMPONENT_HAL_UMQ: do debug for xge core UMQ module
105 * @XGE_COMPONENT_HAL_SQ: do debug for xge core SQ module
106 * @XGE_COMPONENT_HAL_SRQ: do debug for xge core SRQ module
107 * @XGE_COMPONENT_HAL_CQRQ: do debug for xge core CRQ module
108 * @XGE_COMPONENT_HAL_POOL: do debug for xge core memory pool module
109 * @XGE_COMPONENT_HAL_BITMAP: do debug for xge core BITMAP module
110 * @XGE_COMPONENT_CORE: do debug for xge KMA core module
111 * @XGE_COMPONENT_OSDEP: do debug for xge KMA os dependent parts
112 * @XGE_COMPONENT_LL: do debug for xge link layer module
113 * @XGE_COMPONENT_ALL: activate debug for all modules with no exceptions
114 *
115 * This enumeration going to be used to distinguish modules
116 * or libraries during compilation and runtime.  Makefile must declare
117 * XGE_DEBUG_MODULE_MASK macro and set it to proper value.
118 */
119#define XGE_COMPONENT_HAL_CONFIG		0x00000001
120#define	XGE_COMPONENT_HAL_FIFO			0x00000002
121#define	XGE_COMPONENT_HAL_RING			0x00000004
122#define	XGE_COMPONENT_HAL_CHANNEL		0x00000008
123#define	XGE_COMPONENT_HAL_DEVICE		0x00000010
124#define	XGE_COMPONENT_HAL_MM			0x00000020
125#define	XGE_COMPONENT_HAL_QUEUE	        0x00000040
126#define	XGE_COMPONENT_HAL_INTERRUPT     0x00000080
127#define	XGE_COMPONENT_HAL_STATS	        0x00000100
128#ifdef XGEHAL_RNIC
129#define	XGE_COMPONENT_HAL_DMQ	        0x00000200
130#define	XGE_COMPONENT_HAL_UMQ	        0x00000400
131#define	XGE_COMPONENT_HAL_SQ	        0x00000800
132#define	XGE_COMPONENT_HAL_SRQ			0x00001000
133#define	XGE_COMPONENT_HAL_CQRQ			0x00002000
134#define	XGE_COMPONENT_HAL_POOL	        0x00004000
135#define	XGE_COMPONENT_HAL_BITMAP		0x00008000
136#endif
137
138	/* space for CORE_XXX */
139#define	XGE_COMPONENT_OSDEP			0x10000000
140#define	XGE_COMPONENT_LL			0x20000000
141#define	XGE_COMPONENT_ALL			0xffffffff
142
143#ifndef XGE_DEBUG_MODULE_MASK
144#error "XGE_DEBUG_MODULE_MASK macro must be defined for DEBUG mode..."
145#endif
146
147#ifndef __GNUC__
148#ifdef XGE_TRACE_INTO_CIRCULAR_ARR
149        #define xge_trace_aux(fmt) xge_os_vatrace(g_xge_os_tracebuf, fmt)
150#else
151        #define xge_trace_aux(fmt) xge_os_vaprintf(fmt)
152#endif
153
154/**
155 * xge_debug
156 * @level: level of debug verbosity.
157 * @fmt: printf like format string
158 *
159 * Provides logging facilities. Can be customized on per-module
160 * basis or/and with debug levels. Input parameters, except
161 * module and level, are the same as posix printf. This function
162 * may be compiled out if DEBUG macro was never defined.
163 * See also: xge_debug_level_e{}.
164 */
165#define xge_debug(module, level, fmt) { \
166if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \
167    (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \
168    level >= *g_level && module & *(unsigned int *)g_module_mask) { \
169                xge_trace_aux(fmt); \
170	} \
171}
172#else /* __GNUC__ */
173
174#ifdef XGE_TRACE_INTO_CIRCULAR_ARR
175        #define xge_trace_aux(fmt...) xge_os_trace(g_xge_os_tracebuf, fmt)
176#else
177        #define xge_trace_aux(fmt...) xge_os_printf(fmt)
178#endif
179
180#define xge_debug(module, level, fmt...) { \
181if (((level >= XGE_TRACE && ((module & XGE_DEBUG_TRACE_MASK) == module)) || \
182    (level >= XGE_ERR && ((module & XGE_DEBUG_ERR_MASK) == module))) && \
183    level >= *g_level && module & *(unsigned int *)g_module_mask) { \
184                xge_trace_aux(fmt); \
185	} \
186}
187#endif /* __GNUC__ */
188
189#if (XGE_COMPONENT_HAL_STATS & XGE_DEBUG_MODULE_MASK)
190#ifndef __GNUC__
191static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {
192	u32 module = XGE_COMPONENT_HAL_STATS;
193	xge_debug(module, level, fmt);
194}
195#else /* __GNUC__ */
196#define xge_debug_stats(level, fmt...) \
197	xge_debug(XGE_COMPONENT_HAL_STATS, level, fmt)
198#endif /* __GNUC__ */
199#else
200#ifndef __GNUC__
201static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {}
202#else /* __GNUC__ */
203#define xge_debug_stats(level, fmt...)
204#endif /* __GNUC__ */
205#endif
206
207/* Interrupt Related */
208#if (XGE_COMPONENT_HAL_INTERRUPT & XGE_DEBUG_MODULE_MASK)
209#ifndef __GNUC__
210static inline void xge_debug_interrupt(xge_debug_level_e level, char *fmt, ...) {
211	u32 module = XGE_COMPONENT_HAL_INTERRUPT;
212	xge_debug(module, level, fmt);
213}
214#else /* __GNUC__ */
215#define xge_debug_interrupt(level, fmt...) \
216	xge_debug(XGE_COMPONENT_HAL_INTERRUPT, level, fmt)
217#endif /* __GNUC__ */
218#else
219#ifndef __GNUC__
220static inline void xge_debug_interrupt(xge_debug_level_e level, char *fmt, ...) {}
221#else /* __GNUC__ */
222#define xge_debug_interrupt(level, fmt...)
223#endif /* __GNUC__ */
224#endif
225
226#if (XGE_COMPONENT_HAL_QUEUE & XGE_DEBUG_MODULE_MASK)
227#ifndef __GNUC__
228static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) {
229	u32 module = XGE_COMPONENT_HAL_QUEUE;
230	xge_debug(module, level, fmt);
231}
232#else /* __GNUC__ */
233#define xge_debug_queue(level, fmt...) \
234	xge_debug(XGE_COMPONENT_HAL_QUEUE, level, fmt)
235#endif /* __GNUC__ */
236#else
237#ifndef __GNUC__
238static inline void xge_debug_queue(xge_debug_level_e level, char *fmt,
239...) {}
240#else /* __GNUC__ */
241#define xge_debug_queue(level, fmt...)
242#endif /* __GNUC__ */
243#endif
244
245#if (XGE_COMPONENT_HAL_MM & XGE_DEBUG_MODULE_MASK)
246#ifndef __GNUC__
247static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...)
248{
249	u32 module = XGE_COMPONENT_HAL_MM;
250	xge_debug(module, level, fmt);
251}
252#else /* __GNUC__ */
253#define xge_debug_mm(level, fmt...) \
254	xge_debug(XGE_COMPONENT_HAL_MM, level, fmt)
255#endif /* __GNUC__ */
256#else
257#ifndef __GNUC__
258static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...)
259{}
260#else /* __GNUC__ */
261#define xge_debug_mm(level, fmt...)
262#endif /* __GNUC__ */
263#endif
264
265#if (XGE_COMPONENT_HAL_CONFIG & XGE_DEBUG_MODULE_MASK)
266#ifndef __GNUC__
267static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) {
268	u32 module = XGE_COMPONENT_HAL_CONFIG;
269	xge_debug(module, level, fmt);
270}
271#else /* __GNUC__ */
272#define xge_debug_config(level, fmt...) \
273	xge_debug(XGE_COMPONENT_HAL_CONFIG, level, fmt)
274#endif /* __GNUC__ */
275#else
276#ifndef __GNUC__
277static inline void xge_debug_config(xge_debug_level_e level, char *fmt,
278...) {}
279#else /* __GNUC__ */
280#define xge_debug_config(level, fmt...)
281#endif /* __GNUC__ */
282#endif
283
284#if (XGE_COMPONENT_HAL_FIFO & XGE_DEBUG_MODULE_MASK)
285#ifndef __GNUC__
286static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {
287	u32 module = XGE_COMPONENT_HAL_FIFO;
288	xge_debug(module, level, fmt);
289}
290#else /* __GNUC__ */
291#define xge_debug_fifo(level, fmt...) \
292	xge_debug(XGE_COMPONENT_HAL_FIFO, level, fmt)
293#endif /* __GNUC__ */
294#else
295#ifndef __GNUC__
296static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {}
297#else /* __GNUC__ */
298#define xge_debug_fifo(level, fmt...)
299#endif /* __GNUC__ */
300#endif
301
302#if (XGE_COMPONENT_HAL_RING & XGE_DEBUG_MODULE_MASK)
303#ifndef __GNUC__
304static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {
305	u32 module = XGE_COMPONENT_HAL_RING;
306	xge_debug(module, level, fmt);
307}
308#else /* __GNUC__ */
309#define xge_debug_ring(level, fmt...) \
310	xge_debug(XGE_COMPONENT_HAL_RING, level, fmt)
311#endif /* __GNUC__ */
312#else
313#ifndef __GNUC__
314static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {}
315#else /* __GNUC__ */
316#define xge_debug_ring(level, fmt...)
317#endif /* __GNUC__ */
318#endif
319
320#if (XGE_COMPONENT_HAL_CHANNEL & XGE_DEBUG_MODULE_MASK)
321#ifndef __GNUC__
322static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {
323	u32 module = XGE_COMPONENT_HAL_CHANNEL;
324	xge_debug(module, level, fmt);
325}
326#else /* __GNUC__ */
327#define xge_debug_channel(level, fmt...) \
328	xge_debug(XGE_COMPONENT_HAL_CHANNEL, level, fmt)
329#endif /* __GNUC__ */
330#else
331#ifndef __GNUC__
332static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {}
333#else /* __GNUC__ */
334#define xge_debug_channel(level, fmt...)
335#endif /* __GNUC__ */
336#endif
337
338#if (XGE_COMPONENT_HAL_DEVICE & XGE_DEBUG_MODULE_MASK)
339#ifndef __GNUC__
340static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {
341	u32 module = XGE_COMPONENT_HAL_DEVICE;
342	xge_debug(module, level, fmt);
343}
344#else /* __GNUC__ */
345#define xge_debug_device(level, fmt...) \
346	xge_debug(XGE_COMPONENT_HAL_DEVICE, level, fmt)
347#endif /* __GNUC__ */
348#else
349#ifndef __GNUC__
350static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {}
351#else /* __GNUC__ */
352#define xge_debug_device(level, fmt...)
353#endif /* __GNUC__ */
354#endif
355
356#ifdef XGEHAL_RNIC
357
358#if (XGE_COMPONENT_HAL_DMQ & XGE_DEBUG_MODULE_MASK)
359#ifndef __GNUC__
360static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {
361	u32 module = XGE_COMPONENT_HAL_DMQ;
362	xge_debug(module, level, fmt);
363}
364#else /* __GNUC__ */
365#define xge_debug_dmq(level, fmt...) \
366	xge_debug(XGE_COMPONENT_HAL_DMQ, level, fmt)
367#endif /* __GNUC__ */
368#else
369#ifndef __GNUC__
370static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {}
371#else /* __GNUC__ */
372#define xge_debug_dmq(level, fmt...)
373#endif /* __GNUC__ */
374#endif
375
376#if (XGE_COMPONENT_HAL_UMQ & XGE_DEBUG_MODULE_MASK)
377#ifndef __GNUC__
378static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {
379	u32 module = XGE_COMPONENT_HAL_UMQ;
380	xge_debug(module, level, fmt);
381}
382#else /* __GNUC__ */
383#define xge_debug_umq(level, fmt...) \
384	xge_debug(XGE_COMPONENT_HAL_UMQ, level, fmt)
385#endif /* __GNUC__ */
386#else
387#ifndef __GNUC__
388static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {}
389#else /* __GNUC__ */
390#define xge_debug_umq(level, fmt...)
391#endif /* __GNUC__ */
392#endif
393
394#if (XGE_COMPONENT_HAL_SQ & XGE_DEBUG_MODULE_MASK)
395#ifndef __GNUC__
396static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {
397	u32 module = XGE_COMPONENT_HAL_SQ;
398	xge_debug(module, level, fmt);
399}
400#else /* __GNUC__ */
401#define xge_debug_sq(level, fmt...) \
402	xge_debug(XGE_COMPONENT_HAL_SQ, level, fmt)
403#endif /* __GNUC__ */
404#else
405#ifndef __GNUC__
406static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {}
407#else /* __GNUC__ */
408#define xge_debug_sq(level, fmt...)
409#endif /* __GNUC__ */
410#endif
411
412#if (XGE_COMPONENT_HAL_SRQ & XGE_DEBUG_MODULE_MASK)
413#ifndef __GNUC__
414static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {
415	u32 module = XGE_COMPONENT_HAL_SRQ;
416	xge_debug(module, level, fmt);
417}
418#else /* __GNUC__ */
419#define xge_debug_srq(level, fmt...) \
420	xge_debug(XGE_COMPONENT_HAL_SRQ, level, fmt)
421#endif /* __GNUC__ */
422#else
423#ifndef __GNUC__
424static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {}
425#else /* __GNUC__ */
426#define xge_debug_srq(level, fmt...)
427#endif /* __GNUC__ */
428#endif
429
430#if (XGE_COMPONENT_HAL_CQRQ & XGE_DEBUG_MODULE_MASK)
431#ifndef __GNUC__
432static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {
433	u32 module = XGE_COMPONENT_HAL_CQRQ;
434	xge_debug(module, level, fmt);
435}
436#else /* __GNUC__ */
437#define xge_debug_cqrq(level, fmt...) \
438	xge_debug(XGE_COMPONENT_HAL_CQRQ, level, fmt)
439#endif /* __GNUC__ */
440#else
441#ifndef __GNUC__
442static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {}
443#else /* __GNUC__ */
444#define xge_debug_cqrq(level, fmt...)
445#endif /* __GNUC__ */
446#endif
447
448#if (XGE_COMPONENT_HAL_POOL & XGE_DEBUG_MODULE_MASK)
449#ifndef __GNUC__
450static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {
451	u32 module = XGE_COMPONENT_HAL_POOL;
452	xge_debug(module, level, fmt);
453}
454#else /* __GNUC__ */
455#define xge_debug_pool(level, fmt...) \
456	xge_debug(XGE_COMPONENT_HAL_POOL, level, fmt)
457#endif /* __GNUC__ */
458#else
459#ifndef __GNUC__
460static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {}
461#else /* __GNUC__ */
462#define xge_debug_pool(level, fmt...)
463#endif /* __GNUC__ */
464#endif
465
466#if (XGE_COMPONENT_HAL_BITMAP & XGE_DEBUG_MODULE_MASK)
467#ifndef __GNUC__
468static inline void xge_debug_bitmap(xge_debug_level_e level, char *fmt, ...) {
469	u32 module = XGE_COMPONENT_HAL_BITMAP;
470	xge_debug(module, level, fmt);
471}
472#else /* __GNUC__ */
473#define xge_debug_bitmap(level, fmt...) \
474	xge_debug(XGE_COMPONENT_HAL_BITMAP, level, fmt)
475#endif /* __GNUC__ */
476#else
477#ifndef __GNUC__
478static inline void xge_debug_bitmap(xge_debug_level_e level, char *fmt, ...) {}
479#else /* __GNUC__ */
480#define xge_debug_bitmap(level, fmt...)
481#endif /* __GNUC__ */
482#endif
483
484#endif
485
486#if (XGE_COMPONENT_OSDEP & XGE_DEBUG_MODULE_MASK)
487#ifndef __GNUC__
488static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {
489	u32 module = XGE_COMPONENT_OSDEP;
490	xge_debug(module, level, fmt);
491}
492#else /* __GNUC__ */
493#define xge_debug_osdep(level, fmt...) \
494	xge_debug(XGE_COMPONENT_OSDEP, level, fmt)
495#endif /* __GNUC__ */
496#else
497#ifndef __GNUC__
498static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {}
499#else /* __GNUC__ */
500#define xge_debug_osdep(level, fmt...)
501#endif /* __GNUC__ */
502#endif
503
504#if (XGE_COMPONENT_LL & XGE_DEBUG_MODULE_MASK)
505#ifndef __GNUC__
506static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...)
507{
508	u32 module = XGE_COMPONENT_LL;
509	xge_debug(module, level, fmt);
510}
511#else /* __GNUC__ */
512#define xge_debug_ll(level, fmt...) \
513	xge_debug(XGE_COMPONENT_LL, level, fmt)
514#endif /* __GNUC__ */
515#else
516#ifndef __GNUC__
517static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {}
518#else /* __GNUC__ */
519#define xge_debug_ll(level, fmt...)
520#endif /* __GNUC__ */
521#endif
522
523#else
524
525static inline void xge_debug_interrupt(xge_debug_level_e level, char *fmt, ...) {}
526static inline void xge_debug_stats(xge_debug_level_e level, char *fmt, ...) {}
527static inline void xge_debug_queue(xge_debug_level_e level, char *fmt, ...) {}
528static inline void xge_debug_mm(xge_debug_level_e level, char *fmt, ...) {}
529static inline void xge_debug_config(xge_debug_level_e level, char *fmt, ...) {}
530static inline void xge_debug_fifo(xge_debug_level_e level, char *fmt, ...) {}
531static inline void xge_debug_ring(xge_debug_level_e level, char *fmt, ...) {}
532static inline void xge_debug_channel(xge_debug_level_e level, char *fmt, ...) {}
533static inline void xge_debug_device(xge_debug_level_e level, char *fmt, ...) {}
534static inline void xge_debug_dmq(xge_debug_level_e level, char *fmt, ...) {}
535static inline void xge_debug_umq(xge_debug_level_e level, char *fmt, ...) {}
536static inline void xge_debug_sq(xge_debug_level_e level, char *fmt, ...) {}
537static inline void xge_debug_srq(xge_debug_level_e level, char *fmt, ...) {}
538static inline void xge_debug_cqrq(xge_debug_level_e level, char *fmt, ...) {}
539static inline void xge_debug_pool(xge_debug_level_e level, char *fmt, ...) {}
540static inline void xge_debug_bitmap(xge_debug_level_e level, char *fmt, ...) {}
541static inline void xge_debug_hal(xge_debug_level_e level, char *fmt, ...) {}
542static inline void xge_debug_osdep(xge_debug_level_e level, char *fmt, ...) {}
543static inline void xge_debug_ll(xge_debug_level_e level, char *fmt, ...) {}
544
545#endif /* end of XGE_DEBUG_*_MASK */
546
547#ifdef XGE_DEBUG_ASSERT
548
549/**
550 * xge_assert
551 * @test: C-condition to check
552 * @fmt: printf like format string
553 *
554 * This function implements traditional assert. By default assertions
555 * are enabled. It can be disabled by defining XGE_DEBUG_ASSERT macro in
556 * compilation
557 * time.
558 */
559#define xge_assert(test) { \
560        if (!(test)) xge_os_bug("bad cond: "#test" at %s:%d\n", \
561	__FILE__, __LINE__); }
562#else
563#define xge_assert(test)
564#endif /* end of XGE_DEBUG_ASSERT */
565
566__EXTERN_END_DECLS
567
568#endif /* XGE_DEBUG_H */
569