xref: /rockchip-linux_mpp/inc/mpp_log.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2*437bfbebSnyanmisaka /*
3*437bfbebSnyanmisaka  * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
4*437bfbebSnyanmisaka  */
5*437bfbebSnyanmisaka 
6*437bfbebSnyanmisaka #ifndef __MPP_LOG_H__
7*437bfbebSnyanmisaka #define __MPP_LOG_H__
8*437bfbebSnyanmisaka 
9*437bfbebSnyanmisaka #include <stdarg.h>
10*437bfbebSnyanmisaka 
11*437bfbebSnyanmisaka #include "rk_type.h"
12*437bfbebSnyanmisaka #include "mpp_log_def.h"
13*437bfbebSnyanmisaka 
14*437bfbebSnyanmisaka /*
15*437bfbebSnyanmisaka  * _c function will add condition check
16*437bfbebSnyanmisaka  * _f function will add function name to the log
17*437bfbebSnyanmisaka  * _cf function will add both function name and condition check
18*437bfbebSnyanmisaka  */
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka /*
21*437bfbebSnyanmisaka  * mpp runtime log system usage:
22*437bfbebSnyanmisaka  * mpp_logf is for fatal logging. For use when aborting
23*437bfbebSnyanmisaka  * mpp_loge is for error logging. For use with unrecoverable failures.
24*437bfbebSnyanmisaka  * mpp_logw is for warning logging. For use with recoverable failures.
25*437bfbebSnyanmisaka  * mpp_logi is for informational logging.
26*437bfbebSnyanmisaka  * mpp_logd is for debug logging.
27*437bfbebSnyanmisaka  * mpp_logv is for verbose logging
28*437bfbebSnyanmisaka  */
29*437bfbebSnyanmisaka 
30*437bfbebSnyanmisaka #define mpp_logf(fmt, ...)  _mpp_log_l(MPP_LOG_FATAL,   MODULE_TAG, fmt, NULL, ## __VA_ARGS__)
31*437bfbebSnyanmisaka #define mpp_loge(fmt, ...)  _mpp_log_l(MPP_LOG_ERROR,   MODULE_TAG, fmt, NULL, ## __VA_ARGS__)
32*437bfbebSnyanmisaka #define mpp_logw(fmt, ...)  _mpp_log_l(MPP_LOG_WARN,    MODULE_TAG, fmt, NULL, ## __VA_ARGS__)
33*437bfbebSnyanmisaka #define mpp_logi(fmt, ...)  _mpp_log_l(MPP_LOG_INFO,    MODULE_TAG, fmt, NULL, ## __VA_ARGS__)
34*437bfbebSnyanmisaka #define mpp_logd(fmt, ...)  _mpp_log_l(MPP_LOG_DEBUG,   MODULE_TAG, fmt, NULL, ## __VA_ARGS__)
35*437bfbebSnyanmisaka #define mpp_logv(fmt, ...)  _mpp_log_l(MPP_LOG_VERBOSE, MODULE_TAG, fmt, NULL, ## __VA_ARGS__)
36*437bfbebSnyanmisaka 
37*437bfbebSnyanmisaka #define mpp_logf_f(fmt, ...)  _mpp_log_l(MPP_LOG_FATAL,   MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__)
38*437bfbebSnyanmisaka #define mpp_loge_f(fmt, ...)  _mpp_log_l(MPP_LOG_ERROR,   MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__)
39*437bfbebSnyanmisaka #define mpp_logw_f(fmt, ...)  _mpp_log_l(MPP_LOG_WARN,    MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__)
40*437bfbebSnyanmisaka #define mpp_logi_f(fmt, ...)  _mpp_log_l(MPP_LOG_INFO,    MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__)
41*437bfbebSnyanmisaka #define mpp_logd_f(fmt, ...)  _mpp_log_l(MPP_LOG_DEBUG,   MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__)
42*437bfbebSnyanmisaka #define mpp_logv_f(fmt, ...)  _mpp_log_l(MPP_LOG_VERBOSE, MODULE_TAG, fmt, __FUNCTION__, ## __VA_ARGS__)
43*437bfbebSnyanmisaka 
44*437bfbebSnyanmisaka #define mpp_logf_c(cond, fmt, ...)  do { if (cond) mpp_logf(fmt, ## __VA_ARGS__); } while (0)
45*437bfbebSnyanmisaka #define mpp_loge_c(cond, fmt, ...)  do { if (cond) mpp_loge(fmt, ## __VA_ARGS__); } while (0)
46*437bfbebSnyanmisaka #define mpp_logw_c(cond, fmt, ...)  do { if (cond) mpp_logw(fmt, ## __VA_ARGS__); } while (0)
47*437bfbebSnyanmisaka #define mpp_logi_c(cond, fmt, ...)  do { if (cond) mpp_logi(fmt, ## __VA_ARGS__); } while (0)
48*437bfbebSnyanmisaka #define mpp_logd_c(cond, fmt, ...)  do { if (cond) mpp_logd(fmt, ## __VA_ARGS__); } while (0)
49*437bfbebSnyanmisaka #define mpp_logv_c(cond, fmt, ...)  do { if (cond) mpp_logv(fmt, ## __VA_ARGS__); } while (0)
50*437bfbebSnyanmisaka 
51*437bfbebSnyanmisaka #define mpp_logf_cf(cond, fmt, ...) do { if (cond) mpp_logf_f(fmt, ## __VA_ARGS__); } while (0)
52*437bfbebSnyanmisaka #define mpp_loge_cf(cond, fmt, ...) do { if (cond) mpp_loge_f(fmt, ## __VA_ARGS__); } while (0)
53*437bfbebSnyanmisaka #define mpp_logw_cf(cond, fmt, ...) do { if (cond) mpp_logw_f(fmt, ## __VA_ARGS__); } while (0)
54*437bfbebSnyanmisaka #define mpp_logi_cf(cond, fmt, ...) do { if (cond) mpp_logi_f(fmt, ## __VA_ARGS__); } while (0)
55*437bfbebSnyanmisaka #define mpp_logd_cf(cond, fmt, ...) do { if (cond) mpp_logd_f(fmt, ## __VA_ARGS__); } while (0)
56*437bfbebSnyanmisaka #define mpp_logv_cf(cond, fmt, ...) do { if (cond) mpp_logv_f(fmt, ## __VA_ARGS__); } while (0)
57*437bfbebSnyanmisaka 
58*437bfbebSnyanmisaka /*
59*437bfbebSnyanmisaka  * mpp runtime log system usage:
60*437bfbebSnyanmisaka  * mpp_err is for error status message, it will print for sure.
61*437bfbebSnyanmisaka  * mpp_log is for important message like open/close/reset/flush, it will print too.
62*437bfbebSnyanmisaka  */
63*437bfbebSnyanmisaka 
64*437bfbebSnyanmisaka #define mpp_log(fmt, ...)   mpp_logi(fmt, ## __VA_ARGS__)
65*437bfbebSnyanmisaka #define mpp_err(fmt, ...)   mpp_loge(fmt, ## __VA_ARGS__)
66*437bfbebSnyanmisaka 
67*437bfbebSnyanmisaka #define mpp_log_f(fmt, ...)  mpp_logi_f(fmt, ## __VA_ARGS__)
68*437bfbebSnyanmisaka #define mpp_err_f(fmt, ...)  mpp_loge_f(fmt, ## __VA_ARGS__)
69*437bfbebSnyanmisaka 
70*437bfbebSnyanmisaka #define mpp_log_c(cond, fmt, ...)   do { if (cond) mpp_log(fmt, ## __VA_ARGS__); } while (0)
71*437bfbebSnyanmisaka #define mpp_log_cf(cond, fmt, ...)  do { if (cond) mpp_log_f(fmt, ## __VA_ARGS__); } while (0)
72*437bfbebSnyanmisaka 
73*437bfbebSnyanmisaka #ifdef __cplusplus
74*437bfbebSnyanmisaka extern "C" {
75*437bfbebSnyanmisaka #endif
76*437bfbebSnyanmisaka 
77*437bfbebSnyanmisaka void _mpp_log_l(int level, const char *tag, const char *fmt, const char *func, ...);
78*437bfbebSnyanmisaka 
79*437bfbebSnyanmisaka void mpp_set_log_level(int level);
80*437bfbebSnyanmisaka int mpp_get_log_level(void);
81*437bfbebSnyanmisaka 
82*437bfbebSnyanmisaka typedef void (*MppLogCb)(void *ctx, int level, const char *tag, const char *fmt, const char *func, va_list args);
83*437bfbebSnyanmisaka int mpp_set_log_callback(void *ctx, MppLogCb cb);
84*437bfbebSnyanmisaka 
85*437bfbebSnyanmisaka /* deprecated function */
86*437bfbebSnyanmisaka void _mpp_log(const char *tag, const char *fmt, const char *func, ...);
87*437bfbebSnyanmisaka void _mpp_err(const char *tag, const char *fmt, const char *func, ...);
88*437bfbebSnyanmisaka 
89*437bfbebSnyanmisaka #ifdef __cplusplus
90*437bfbebSnyanmisaka }
91*437bfbebSnyanmisaka #endif
92*437bfbebSnyanmisaka 
93*437bfbebSnyanmisaka #endif /*__MPP_LOG_H__*/
94