1*4882a593Smuzhiyun /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef INCLUDE_RT_MPI_RK_DEBUG_H_ 5*4882a593Smuzhiyun #define INCLUDE_RT_MPI_RK_DEBUG_H_ 6*4882a593Smuzhiyun #ifndef __BUILD_KO__ 7*4882a593Smuzhiyun #include <stdio.h> 8*4882a593Smuzhiyun #include <stdarg.h> 9*4882a593Smuzhiyun #endif 10*4882a593Smuzhiyun #include "rk_type.h" 11*4882a593Smuzhiyun #include "rk_common.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #ifdef __cplusplus 14*4882a593Smuzhiyun #if __cplusplus 15*4882a593Smuzhiyun extern "C" { 16*4882a593Smuzhiyun #endif 17*4882a593Smuzhiyun #endif /* __cplusplus */ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #define RK_DBG_FATAL 1 /* fatal error */ 20*4882a593Smuzhiyun #define RK_DBG_ERR 2 /* error conditions */ 21*4882a593Smuzhiyun #define RK_DBG_WARN 3 /* warning conditions */ 22*4882a593Smuzhiyun #define RK_DBG_INFO 4 /* informational */ 23*4882a593Smuzhiyun #define RK_DBG_DEBUG 5 /* debug-level messages */ 24*4882a593Smuzhiyun #define RK_DBG_VERBOSE 6 /* verbose */ 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun typedef struct rkLOG_LEVEL_CONF_S { 27*4882a593Smuzhiyun MOD_ID_E enModId; 28*4882a593Smuzhiyun RK_S32 s32Level; 29*4882a593Smuzhiyun RK_CHAR cModName[16]; 30*4882a593Smuzhiyun } LOG_LEVEL_CONF_S; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /****************************************************************************** 33*4882a593Smuzhiyun ** For User Mode : RK_PRINT, RK_ASSERT, RK_TRACE 34*4882a593Smuzhiyun ******************************************************************************/ 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun #define RK_PRINT printf 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #define CONFIG_RK_LOG_TRACE_SUPPORT 1 39*4882a593Smuzhiyun #ifndef DBG_LEVEL 40*4882a593Smuzhiyun #define DBG_LEVEL RK_DBG_DEBUG 41*4882a593Smuzhiyun #endif 42*4882a593Smuzhiyun #ifndef DBG_MOD_ID 43*4882a593Smuzhiyun #define DBG_MOD_ID RK_ID_CMPI 44*4882a593Smuzhiyun #endif 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun /* #ifdef RK_DEBUG */ 47*4882a593Smuzhiyun #ifdef CONFIG_RK_LOG_TRACE_SUPPORT 48*4882a593Smuzhiyun /* Using samples: RK_ASSERT(x>y); */ 49*4882a593Smuzhiyun #define RK_ASSERT(expr) \ 50*4882a593Smuzhiyun do { \ 51*4882a593Smuzhiyun if (!(expr)) { \ 52*4882a593Smuzhiyun printf("\nASSERT at:\n" \ 53*4882a593Smuzhiyun " >Function : %s\n" \ 54*4882a593Smuzhiyun " >Line No. : %d\n" \ 55*4882a593Smuzhiyun " >Condition: %s\n", \ 56*4882a593Smuzhiyun __FUNCTION__, __LINE__, #expr);\ 57*4882a593Smuzhiyun _exit(-1);\ 58*4882a593Smuzhiyun } \ 59*4882a593Smuzhiyun } while (0) 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* Using samples: 62*4882a593Smuzhiyun * RK_TRACE(RK_DBG_DEBUG, "Test %d, %s\n", 12, "Test"); 63*4882a593Smuzhiyun */ 64*4882a593Smuzhiyun #define RK_TRACE(level, fmt, ...) \ 65*4882a593Smuzhiyun do { \ 66*4882a593Smuzhiyun RK_LOG(level, DBG_MOD_ID, fmt, __FUNCTION__, \ 67*4882a593Smuzhiyun __LINE__, ##__VA_ARGS__); \ 68*4882a593Smuzhiyun } while (0) 69*4882a593Smuzhiyun #else 70*4882a593Smuzhiyun #define RK_ASSERT(expr) 71*4882a593Smuzhiyun #define RK_TRACE(level, fmt, ...) 72*4882a593Smuzhiyun #endif 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun #define RK_LOGE(fmt, ...) RK_TRACE(RK_DBG_ERR, fmt, ##__VA_ARGS__) 75*4882a593Smuzhiyun #define RK_LOGW(fmt, ...) RK_TRACE(RK_DBG_WARN, fmt, ##__VA_ARGS__) 76*4882a593Smuzhiyun #define RK_LOGI(fmt, ...) RK_TRACE(RK_DBG_INFO, fmt, ##__VA_ARGS__) 77*4882a593Smuzhiyun #define RK_LOGD(fmt, ...) RK_TRACE(RK_DBG_DEBUG, fmt, ##__VA_ARGS__) 78*4882a593Smuzhiyun #define RK_LOGV(fmt, ...) RK_TRACE(RK_DBG_VERBOSE, fmt, ##__VA_ARGS__) 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun void RK_LOG(RK_S32 level, RK_S32 modId, const char *fmt, 81*4882a593Smuzhiyun const char *fname, const RK_U32 row, ...); 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #ifdef __cplusplus 84*4882a593Smuzhiyun #if __cplusplus 85*4882a593Smuzhiyun } 86*4882a593Smuzhiyun #endif 87*4882a593Smuzhiyun #endif /* __cplusplus */ 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun #endif // INCLUDE_RT_MPI_RK_DEBUG_H_ 90