firmware/br-ext-chip-xiongmai/package/xiongmai-osdrv-xm530/files/include/isp/xm_debug.h

112 lines
3.6 KiB
C

/******************************************************************************
Copyright (C), 2015-2020, XM. Co., Ltd.
******************************************************************************
File Name : xm_debug.h
Version : Initial Draft
Author : XM Isp software group
Created : 2015/6/27
Description : The common data type defination
Function List :
History :
1.Date : 2015/6/27
Author : Lycai
Modification : creat
******************************************************************************/
#ifndef __XM_DEBUG_H__
#define __XM_DEBUG_H__
#include "xm_type.h"
#include "xm_common.h"
#define _EX__FILE_LINE(fxx,lxx) "[File]:"fxx"\n[Line]:"#lxx"\n[Info]:"
#define EX__FILE_LINE(fxx,lxx) _EX__FILE_LINE(fxx,lxx)
#define __FILE_LINE__ EX__FILE_LINE(__FILE__, __LINE__)
#define XM_DBG_EMERG 0 /* system is unusable */
#define XM_DBG_ALERT 1 /* action must be taken immediately */
#define XM_DBG_CRIT 2 /* critical conditions */
#define XM_DBG_ERR 3 /* error conditions */
#define XM_DBG_WARN 4 /* warning conditions */
#define XM_DBG_NOTICE 5 /* normal but significant condition */
#define XM_DBG_INFO 6 /* informational */
#define XM_DBG_DEBUG 7 /* debug-level messages */
typedef struct xm_LOG_LEVEL_CONF_S
{
MOD_ID_E enModId;
XM_S32 s32Level;
XM_CHAR cModName[16];
} LOG_LEVEL_CONF_S;
#ifndef __KERNEL__
/******************************************************************************
** For User Mode : XM_PRINT, XM_ASSERT, XM_TRACE
******************************************************************************/
#define XM_PRINT printf
#ifdef XM_DEBUG
/* Using samples: XM_ASSERT(x>y); */
#define XM_ASSERT(expr) \
do{ \
if (!(expr)) { \
printf("\nASSERT failed at:\n"\
" >File name: %s\n" \
" >Function : %s\n" \
" >Line No. : %d\n" \
" >Condition: %s\n", \
__FILE__,__FUNCTION__, __LINE__, #expr);\
_exit(-1);\
} \
}while(0)
/* Using samples:
** XM_TRACE(XM_DBG_DEBUG, XM_ID_CMPI, "Test %d, %s\n", 12, "Test");
**/
#define XM_TRACE(level, enModId, fmt...) fprintf(stderr,##fmt)
#else
#define XM_ASSERT(expr)
#define XM_TRACE(level, enModId, fmt...)
#endif
#else
/******************************************************************************
** For Linux Kernel : XM_PRINT, XM_ASSERT, XM_TRACE
******************************************************************************/
#define XM_PRINT printk
extern XM_S32 XM_ChkLogLevel(XM_S32 s32Levle, MOD_ID_E enModId);
asmlinkage int XM_LOG(XM_S32 level, MOD_ID_E enModId,const char *fmt, ...);
#ifdef XM_DEBUG
/* Using samples: XM_ASSERT(x>y); */
#define XM_ASSERT(expr) \
do{ \
if (!(expr)) { \
panic("\nASSERT failed at:\n" \
" >File name: %s\n" \
" >Function : %s\n" \
" >Line No. : %d\n" \
" >Condition: %s\n", \
__FILE__,__FUNCTION__, __LINE__, #expr);\
} \
}while(0)
/* Using samples:
** XM_TRACE(XM_DBG_DEBUG, XM_ID_CMPI, "Test %d, %s\n", 12, "Test");
**/
#define XM_TRACE XM_LOG
#else
#define XM_ASSERT(expr)
#define XM_TRACE(level, enModId, fmt...)
#endif
#endif /* end of __KERNEL__ */
#endif /* __XM_DEBUG_H__ */