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 */ 171static 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 */ 196static 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 */ 220static 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 */ 245static 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