Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

/*-
 * Copyright(c) 2002-2011 Exar Corp.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification are permitted provided the following conditions are met:
 *
 *    1. Redistributions of source code must retain the above copyright notice,
 *       this list of conditions and the following disclaimer.
 *
 *    2. Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *
 *    3. Neither the name of the Exar Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived from
 *       this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */
/*$FreeBSD$*/

#ifndef	VXGE_OS_DEBUG_H
#define	VXGE_OS_DEBUG_H

__EXTERN_BEGIN_DECLS

#ifndef	VXGE_DEBUG_INLINE_FUNCTIONS

#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR)
#define	vxge_trace_aux(hldev, vpid, fmt, ...)				\
		vxge_os_vasprintf(hldev, vpid, fmt, __VA_ARGS__)
#else
#define	vxge_trace_aux(hldev, vpid, fmt, ...)				\
		vxge_os_vaprintf(hldev, vpid, fmt, __VA_ARGS__)
#endif

#define	vxge_debug(module, level, hldev, vpid, fmt, ...)		\
{									\
	if (((u32)level <=						\
		((vxge_hal_device_t *)hldev)->debug_level) &&		\
	    ((u32)module &						\
		((vxge_hal_device_t *)hldev)->debug_module_mask))	\
			vxge_trace_aux((vxge_hal_device_h)hldev,	\
					vpid, fmt, __VA_ARGS__);	\
}

/*
 * vxge_debug_driver
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for OS Dependent functions. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
#if (VXGE_COMPONENT_HAL_DRIVER & VXGE_DEBUG_MODULE_MASK)
#define	vxge_debug_driver(level, hldev, vpid, fmt, ...)		    \
	if ((u32)level <= g_debug_level)			    \
		vxge_os_vaprintf((vxge_hal_device_h)hldev,	    \
				vpid, fmt, __VA_ARGS__);
#else
#define	vxge_debug_driver(level, hldev, vpid, fmt, ...)
#endif

/*
 * vxge_debug_osdep
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for OS Dependent functions. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
#if (VXGE_COMPONENT_OSDEP & VXGE_DEBUG_MODULE_MASK)
#define	vxge_debug_osdep(level, hldev, vpid, fmt, ...) \
	vxge_debug(VXGE_COMPONENT_OSDEP, level, hldev, vpid, fmt, __VA_ARGS__)
#else
#define	vxge_debug_osdep(level, hldev, vpid, fmt, ...)
#endif

/*
 * vxge_debug_ll
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for LL driver. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
#if (VXGE_COMPONENT_LL & VXGE_DEBUG_MODULE_MASK)
#define	vxge_debug_ll(level, hldev, vpid, fmt, ...) \
	vxge_debug(VXGE_COMPONENT_LL, level, hldev, vpid, fmt, __VA_ARGS__)
#else
#define	vxge_debug_ll(level, hldev, vpid, fmt, ...)
#endif

/*
 * vxge_debug_uld
 * @component: The Component mask
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for LL driver. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
#if (VXGE_COMPONENT_ULD & VXGE_DEBUG_MODULE_MASK)
#define	vxge_debug_uld(component, level, hldev, vpid, fmt, ...) \
	vxge_debug(component, level, hldev, vpid, fmt, __VA_ARGS__)
#else
#define	vxge_debug_uld(level, hldev, vpid, fmt, ...)
#endif

#else	/* VXGE_DEBUG_INLINE_FUNCTIONS */

#if defined(VXGE_TRACE_INTO_CIRCULAR_ARR)
#define	vxge_trace_aux(hldev, vpid, fmt)				\
		vxge_os_vasprintf(hldev, vpid, fmt)
#else
#define	vxge_trace_aux(hldev, vpid, fmt)				\
		vxge_os_vaprintf(hldev, vpid, fmt)
#endif

#define	vxge_debug(module, level, hldev, vpid, fmt)			    \
{									    \
	if (((u32)level <= ((vxge_hal_device_t *)hldev)->debug_level) &&    \
	    ((u32)module & ((vxge_hal_device_t *)hldev)->debug_module_mask))\
		vxge_trace_aux((vxge_hal_device_h)hldev, vpid, fmt);	    \
}

/*
 * vxge_debug_driver
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for OS Dependent functions. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
static inline void vxge_debug_driver(
    vxge_debug_level_e level,
    vxge_hal_device_h hldev,
    u32 vpid,
    char *fmt, ...)
{
#if (VXGE_COMPONENT_HAL_DRIVER & VXGE_DEBUG_MODULE_MASK)
	if ((u32) level <= g_debug_level)
		vxge_os_vaprintf((vxge_hal_device_h) hldev, vpid, fmt);
#endif
}

/*
 * vxge_debug_osdep
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for OS Dependent functions. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
static inline void vxge_debug_osdep(
    vxge_debug_level_e level,
    vxge_hal_device_h hldev,
    u32 vpid,
    char *fmt, ...)
{
#if (VXGE_COMPONENT_OSDEP & VXGE_DEBUG_MODULE_MASK)
	vxge_debug(VXGE_COMPONENT_OSDEP, level, hldev, vpid, fmt)
#endif
}

/*
 * vxge_debug_ll
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for LL driver. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
static inline void vxge_debug_ll(
    vxge_debug_level_e level,
    vxge_hal_device_h hldev,
    u32 vpid,
    char *fmt, ...)
{
#if (VXGE_COMPONENT_LL & VXGE_DEBUG_MODULE_MASK)
	vxge_debug(VXGE_COMPONENT_LL, level, hldev, vpid, fmt)
#endif
}

/*
 * vxge_debug_uld
 * @component: The Component mask
 * @level: level of debug verbosity.
 * @hldev: HAL Device
 * @vpid: Vpath id
 * @fmt: printf like format string
 *
 * Provides logging facilities for LL driver. Can be customized
 * with debug levels. Input parameters, except level, are the same
 * as posix printf. This function may be compiled out if DEBUG macro
 * was never defined.
 * See also: vxge_debug_level_e{}.
 */
static inline void vxge_debug_uld(
    u32 component,
    vxge_debug_level_e level,
    vxge_hal_device_h hldev,
    u32 vpid,
    char *fmt, ...)
{
#if (VXGE_COMPONENT_ULD & VXGE_DEBUG_MODULE_MASK)
	vxge_debug(component, level, hldev, vpid, fmt)
#endif
}

#endif	/* end of VXGE_DEBUG_INLINE_FUNCTIONS */

__EXTERN_END_DECLS

#endif	/* VXGE_OS_DEBUG_H */