]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/dev/vxge/include/vxge-os-debug.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / dev / vxge / include / vxge-os-debug.h
1 /*-
2  * Copyright(c) 2002-2011 Exar Corp.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification are permitted provided the following conditions are met:
7  *
8  *    1. Redistributions of source code must retain the above copyright notice,
9  *       this list of conditions and the following disclaimer.
10  *
11  *    2. Redistributions in binary form must reproduce the above copyright
12  *       notice, this list of conditions and the following disclaimer in the
13  *       documentation and/or other materials provided with the distribution.
14  *
15  *    3. Neither the name of the Exar Corporation nor the names of its
16  *       contributors may be used to endorse or promote products derived from
17  *       this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 /*$FreeBSD$*/
32
33 #ifndef VXGE_OS_DEBUG_H
34 #define VXGE_OS_DEBUG_H
35
36 __EXTERN_BEGIN_DECLS
37
38 #ifndef VXGE_DEBUG_INLINE_FUNCTIONS
39
40 #if defined(VXGE_TRACE_INTO_CIRCULAR_ARR)
41 #define vxge_trace_aux(hldev, vpid, fmt, ...)                           \
42                 vxge_os_vasprintf(hldev, vpid, fmt, __VA_ARGS__)
43 #else
44 #define vxge_trace_aux(hldev, vpid, fmt, ...)                           \
45                 vxge_os_vaprintf(hldev, vpid, fmt, __VA_ARGS__)
46 #endif
47
48 #define vxge_debug(module, level, hldev, vpid, fmt, ...)                \
49 {                                                                       \
50         if (((u32)level <=                                              \
51                 ((vxge_hal_device_t *)hldev)->debug_level) &&           \
52             ((u32)module &                                              \
53                 ((vxge_hal_device_t *)hldev)->debug_module_mask))       \
54                         vxge_trace_aux((vxge_hal_device_h)hldev,        \
55                                         vpid, fmt, __VA_ARGS__);        \
56 }
57
58 /*
59  * vxge_debug_driver
60  * @level: level of debug verbosity.
61  * @hldev: HAL Device
62  * @vpid: Vpath id
63  * @fmt: printf like format string
64  *
65  * Provides logging facilities for OS Dependent functions. Can be customized
66  * with debug levels. Input parameters, except level, are the same
67  * as posix printf. This function may be compiled out if DEBUG macro
68  * was never defined.
69  * See also: vxge_debug_level_e{}.
70  */
71 #if (VXGE_COMPONENT_HAL_DRIVER & VXGE_DEBUG_MODULE_MASK)
72 #define vxge_debug_driver(level, hldev, vpid, fmt, ...)             \
73         if ((u32)level <= g_debug_level)                            \
74                 vxge_os_vaprintf((vxge_hal_device_h)hldev,          \
75                                 vpid, fmt, __VA_ARGS__);
76 #else
77 #define vxge_debug_driver(level, hldev, vpid, fmt, ...)
78 #endif
79
80 /*
81  * vxge_debug_osdep
82  * @level: level of debug verbosity.
83  * @hldev: HAL Device
84  * @vpid: Vpath id
85  * @fmt: printf like format string
86  *
87  * Provides logging facilities for OS Dependent functions. Can be customized
88  * with debug levels. Input parameters, except level, are the same
89  * as posix printf. This function may be compiled out if DEBUG macro
90  * was never defined.
91  * See also: vxge_debug_level_e{}.
92  */
93 #if (VXGE_COMPONENT_OSDEP & VXGE_DEBUG_MODULE_MASK)
94 #define vxge_debug_osdep(level, hldev, vpid, fmt, ...) \
95         vxge_debug(VXGE_COMPONENT_OSDEP, level, hldev, vpid, fmt, __VA_ARGS__)
96 #else
97 #define vxge_debug_osdep(level, hldev, vpid, fmt, ...)
98 #endif
99
100 /*
101  * vxge_debug_ll
102  * @level: level of debug verbosity.
103  * @hldev: HAL Device
104  * @vpid: Vpath id
105  * @fmt: printf like format string
106  *
107  * Provides logging facilities for LL driver. Can be customized
108  * with debug levels. Input parameters, except level, are the same
109  * as posix printf. This function may be compiled out if DEBUG macro
110  * was never defined.
111  * See also: vxge_debug_level_e{}.
112  */
113 #if (VXGE_COMPONENT_LL & VXGE_DEBUG_MODULE_MASK)
114 #define vxge_debug_ll(level, hldev, vpid, fmt, ...) \
115         vxge_debug(VXGE_COMPONENT_LL, level, hldev, vpid, fmt, __VA_ARGS__)
116 #else
117 #define vxge_debug_ll(level, hldev, vpid, fmt, ...)
118 #endif
119
120 /*
121  * vxge_debug_uld
122  * @component: The Component mask
123  * @level: level of debug verbosity.
124  * @hldev: HAL Device
125  * @vpid: Vpath id
126  * @fmt: printf like format string
127  *
128  * Provides logging facilities for LL driver. Can be customized
129  * with debug levels. Input parameters, except level, are the same
130  * as posix printf. This function may be compiled out if DEBUG macro
131  * was never defined.
132  * See also: vxge_debug_level_e{}.
133  */
134 #if (VXGE_COMPONENT_ULD & VXGE_DEBUG_MODULE_MASK)
135 #define vxge_debug_uld(component, level, hldev, vpid, fmt, ...) \
136         vxge_debug(component, level, hldev, vpid, fmt, __VA_ARGS__)
137 #else
138 #define vxge_debug_uld(level, hldev, vpid, fmt, ...)
139 #endif
140
141 #else   /* VXGE_DEBUG_INLINE_FUNCTIONS */
142
143 #if defined(VXGE_TRACE_INTO_CIRCULAR_ARR)
144 #define vxge_trace_aux(hldev, vpid, fmt)                                \
145                 vxge_os_vasprintf(hldev, vpid, fmt)
146 #else
147 #define vxge_trace_aux(hldev, vpid, fmt)                                \
148                 vxge_os_vaprintf(hldev, vpid, fmt)
149 #endif
150
151 #define vxge_debug(module, level, hldev, vpid, fmt)                         \
152 {                                                                           \
153         if (((u32)level <= ((vxge_hal_device_t *)hldev)->debug_level) &&    \
154             ((u32)module & ((vxge_hal_device_t *)hldev)->debug_module_mask))\
155                 vxge_trace_aux((vxge_hal_device_h)hldev, vpid, fmt);        \
156 }
157
158 /*
159  * vxge_debug_driver
160  * @level: level of debug verbosity.
161  * @hldev: HAL Device
162  * @vpid: Vpath id
163  * @fmt: printf like format string
164  *
165  * Provides logging facilities for OS Dependent functions. Can be customized
166  * with debug levels. Input parameters, except level, are the same
167  * as posix printf. This function may be compiled out if DEBUG macro
168  * was never defined.
169  * See also: vxge_debug_level_e{}.
170  */
171 static inline void vxge_debug_driver(
172     vxge_debug_level_e level,
173     vxge_hal_device_h hldev,
174     u32 vpid,
175     char *fmt, ...)
176 {
177 #if (VXGE_COMPONENT_HAL_DRIVER & VXGE_DEBUG_MODULE_MASK)
178         if ((u32) level <= g_debug_level)
179                 vxge_os_vaprintf((vxge_hal_device_h) hldev, vpid, fmt);
180 #endif
181 }
182
183 /*
184  * vxge_debug_osdep
185  * @level: level of debug verbosity.
186  * @hldev: HAL Device
187  * @vpid: Vpath id
188  * @fmt: printf like format string
189  *
190  * Provides logging facilities for OS Dependent functions. Can be customized
191  * with debug levels. Input parameters, except level, are the same
192  * as posix printf. This function may be compiled out if DEBUG macro
193  * was never defined.
194  * See also: vxge_debug_level_e{}.
195  */
196 static inline void vxge_debug_osdep(
197     vxge_debug_level_e level,
198     vxge_hal_device_h hldev,
199     u32 vpid,
200     char *fmt, ...)
201 {
202 #if (VXGE_COMPONENT_OSDEP & VXGE_DEBUG_MODULE_MASK)
203         vxge_debug(VXGE_COMPONENT_OSDEP, level, hldev, vpid, fmt)
204 #endif
205 }
206
207 /*
208  * vxge_debug_ll
209  * @level: level of debug verbosity.
210  * @hldev: HAL Device
211  * @vpid: Vpath id
212  * @fmt: printf like format string
213  *
214  * Provides logging facilities for LL driver. Can be customized
215  * with debug levels. Input parameters, except level, are the same
216  * as posix printf. This function may be compiled out if DEBUG macro
217  * was never defined.
218  * See also: vxge_debug_level_e{}.
219  */
220 static inline void vxge_debug_ll(
221     vxge_debug_level_e level,
222     vxge_hal_device_h hldev,
223     u32 vpid,
224     char *fmt, ...)
225 {
226 #if (VXGE_COMPONENT_LL & VXGE_DEBUG_MODULE_MASK)
227         vxge_debug(VXGE_COMPONENT_LL, level, hldev, vpid, fmt)
228 #endif
229 }
230
231 /*
232  * vxge_debug_uld
233  * @component: The Component mask
234  * @level: level of debug verbosity.
235  * @hldev: HAL Device
236  * @vpid: Vpath id
237  * @fmt: printf like format string
238  *
239  * Provides logging facilities for LL driver. Can be customized
240  * with debug levels. Input parameters, except level, are the same
241  * as posix printf. This function may be compiled out if DEBUG macro
242  * was never defined.
243  * See also: vxge_debug_level_e{}.
244  */
245 static inline void vxge_debug_uld(
246     u32 component,
247     vxge_debug_level_e level,
248     vxge_hal_device_h hldev,
249     u32 vpid,
250     char *fmt, ...)
251 {
252 #if (VXGE_COMPONENT_ULD & VXGE_DEBUG_MODULE_MASK)
253         vxge_debug(component, level, hldev, vpid, fmt)
254 #endif
255 }
256
257 #endif  /* end of VXGE_DEBUG_INLINE_FUNCTIONS */
258
259 __EXTERN_END_DECLS
260
261 #endif  /* VXGE_OS_DEBUG_H */