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: stable/10/sys/dev/vxge/include/vxge-os-debug.h 221167 2011-04-28 14:33:15Z gnn $*/ 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 */ 262