Files
gk-sdk/source/rootfs/regtools/include/common/bsp_dbg.h
T

239 lines
6.2 KiB
C
Executable File

/*
* Copyright (c) XMEDIA. All rights reserved.
*/
#ifndef __XMEDIA_DBG_H__
#define __XMEDIA_DBG_H__
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */
#include <stdio.h>
#if defined(DEBUG)
#include <assert.h>
#endif
#ifdef LOGQUEUE
#include "bsp_message.h"
USE_GLOBALVAR LOG_QUEUE gLogQueue;
#endif
#if defined(DEBUG)
#define DBG_ASSERT(expression) assert(expression)
#define DBG_ASSERT_STR(expression, str) \
do \
{ \
if (!(expression)) \
{ \
WRITE_LOG_DEBUG(str); \
assert(expression); \
} \
}while(0);
#define DBG_LOG WRITE_LOG_DEBUG
#define DBG_LOG1 WRITE_LOG_DEBUG1
#define DBG_LOG2 WRITE_LOG_DEBUG2
#else
#define DBG_ASSERT(expression) ((void)0)
#define DBG_ASSERT_STR(expression, str)
#define DBG_LOG(args...)
#define DBG_LOG1 WRITE_LOG_DEBUG1
#define DBG_LOG2 WRITE_LOG_DEBUG2
#endif
#define LOG_LEVEL_NORMAL 0
#define LOG_LEVEL_FATAL 1
#define LOG_LEVEL_ERROR 2
#define LOG_LEVEL_WARN 3
#define LOG_LEVEL_INFO 4
#define LOG_LEVEL_DEBUG 5
#define LOG_LEVEL_DEBUG1 6
#define LOG_LEVEL_DEBUG2 7
#define LOG_LEVEL_ALL 10
#define LOG_LEVEL_NONE 0
#define LOG_LEVEL_DEFAULT LOG_LEVEL_INFO
#define LOG_LEVEL_MINI LOG_LEVEL_ERROR
#define LOG_LEVEL_MAX LOG_LEVEL_ALL
/* LOG */
/*
*WRITE_LOG_FATAL("Memory is too much , total: %u M, it's waste, please save people's money , 1024");
*WRITE_LOG ( LOG_LEVEL_WARN, "after VIU device analyse: you are a handsome pig." );
*/
/*gLogQueue is a Global Var, now defined at bsp_message.c and
declare at bsp_dbg.h, it you use this log functions outside,
you can declare your owner "gLogQueue"*/
/*Call this first , and only call it once*/
/*level = LOG_LEVEL_ERROR .....*/
#ifdef LOGQUEUE
#define LOG_CREATE(level, msglen) Log_Create(&gLogQueue, level, msglen)
#define LOG_SETLEVEL(level) (gLogQueue.ucMinLevel = level)
#define LOG_GETLEVEL() (gLogQueue.ucMinLevel)
#define LOG_DESTROY() Log_Destroy(&gLogQueue)
#if 0
#define WRITE_LOG_NORMAL(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_NORMAL, psz_format, ##args )
#define WRITE_LOG_INFO(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_INFO, psz_format, ##args )
#define WRITE_LOG_FATAL(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_FATAL, psz_format, ##args )
#define WRITE_LOG_ERROR(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_ERROR, psz_format, ##args )
#define WRITE_LOG_WARN(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_WARN, psz_format, ##args )
#define WRITE_LOG_DEBUG(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_DEBUG, "{%s:%i}:"psz_format, \
__FILE__, __LINE__ ,##args)
#define WRITE_LOG_DEBUG1(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_DEBUG1, "{%s:%i}:"psz_format, \
__FILE__, __LINE__ ,##args)
#define WRITE_LOG_DEBUG2(psz_format, args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_DEBUG2, "{%s:%i}:"psz_format, \
__FILE__, __LINE__ ,##args)
#define WRITE_LOG(iLevel, psz_format, args... ) \
Log_Msg(&gLogQueue, iLevel, psz_format, ##args )
#endif /* End of #if 0 */
#define MKSTR(exp) # exp
#define MKMARCOTOSTR(exp) MKSTR(exp)
#define LINENUMBER MKMARCOTOSTR(__LINE__)
#define ATTACHINFO ""
#define WRITE_LOG_NORMAL(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_NORMAL, args )
#define WRITE_LOG_INFO(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_INFO, args)
#define WRITE_LOG_FATAL(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_FATAL, args )
#define WRITE_LOG_ERROR(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_ERROR, args )
#define WRITE_LOG_WARN(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_WARN, args )
#define WRITE_LOG_DEBUG(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_DEBUG, ATTACHINFO args)
#define WRITE_LOG_DEBUG1(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_DEBUG1, ATTACHINFO args)
#define WRITE_LOG_DEBUG2(args... ) \
Log_Msg(&gLogQueue, LOG_LEVEL_DEBUG2, ATTACHINFO args)
#define WRITE_LOG(iLevel, args... ) \
Log_Msg(&gLogQueue, iLevel, args )
#else
#define LOG_CREATE(level, msglen)
#define LOG_SETLEVEL(level)
#define LOG_GETLEVEL() (0)
#define LOG_DESTROY()
#define WRITE_LOG_NORMAL(args...)
#define WRITE_LOG_INFO(args...)
#define WRITE_LOG_FATAL(args...)
#define WRITE_LOG_ERROR(args...)
#define WRITE_LOG_WARN(args...)
#define WRITE_LOG_DEBUG(args...)
#define WRITE_LOG_DEBUG1(args...)
#define WRITE_LOG_DEBUG2(args...)
#define WRITE_LOG(args...)
#endif
#if defined(OS_LINUX) && defined(USE_BTRACE) && defined(DEBUG)
#if !defined(BTRACE_ENABLE)
#define BTRACE_ENABLE
#endif
#else
#if defined(BTRACE_ENABLE)
#undef BTRACE_ENABLE
#endif
#endif
#if defined(BTRACE_ENABLE)
#define BTRACE_INIT() btrace()
#define BTRACE_PRINT btrace_print
#define BTRACE_PRINT_FUNC() btrace_print_str(__func__)
#define BTRACE_PRINT_STR(str) btrace_print_str(str)
#else
#define BTRACE_INIT()
#define BTRACE_PRINT
#define BTRACE_PRINT_FUNC()
#define BTRACE_PRINT_STR(str)
#endif
EXTERNFUNC XMEDIA_RET bsp_md(IN VOID* pStart,IN U32 ulLen,IN FD fd);
/*Memory Dump 2 file*/
EXTERNFUNC XMEDIA_RET bsp_md2file(IN VOID* pStart,IN U32 ulLen,
IN const char* strLabel,
IN char* fn);
EXTERNFUNC void bsp_hexdump(OUT FILE *stream,
IN const void *src, IN size_t len,
IN size_t width);
EXTERNFUNC VOID bsp_hexdump_log(IN const void *src, IN size_t len,
IN size_t width);
VOID bsp_hexdump2(OUT FILE *stream,
IN const void *src, IN size_t len, IN size_t width);
#if defined(DEBUG)
#define MEM_DUMP bsp_md
#define MEM_DUMP2FILE bsp_md2file
#else
#define MEM_DUMP
#define MEM_DUMP2FILE
#endif
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
#endif /* __XMEDIA_DBG_H__ */