xref: /aosp_15_r20/external/erofs-utils/include/erofs/print.h (revision 33b1fccf6a0fada2c2875d400ed01119b7676ee5)
1*33b1fccfSAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ OR Apache-2.0 */
2*33b1fccfSAndroid Build Coastguard Worker /*
3*33b1fccfSAndroid Build Coastguard Worker  * Copyright (C) 2018-2019 HUAWEI, Inc.
4*33b1fccfSAndroid Build Coastguard Worker  *             http://www.huawei.com/
5*33b1fccfSAndroid Build Coastguard Worker  * Created by Li Guifu <[email protected]>
6*33b1fccfSAndroid Build Coastguard Worker  */
7*33b1fccfSAndroid Build Coastguard Worker #ifndef __EROFS_PRINT_H
8*33b1fccfSAndroid Build Coastguard Worker #define __EROFS_PRINT_H
9*33b1fccfSAndroid Build Coastguard Worker 
10*33b1fccfSAndroid Build Coastguard Worker #ifdef __cplusplus
11*33b1fccfSAndroid Build Coastguard Worker extern "C"
12*33b1fccfSAndroid Build Coastguard Worker {
13*33b1fccfSAndroid Build Coastguard Worker #endif
14*33b1fccfSAndroid Build Coastguard Worker 
15*33b1fccfSAndroid Build Coastguard Worker #include "config.h"
16*33b1fccfSAndroid Build Coastguard Worker #include <stdio.h>
17*33b1fccfSAndroid Build Coastguard Worker 
18*33b1fccfSAndroid Build Coastguard Worker enum {
19*33b1fccfSAndroid Build Coastguard Worker 	EROFS_MSG_MIN = 0,
20*33b1fccfSAndroid Build Coastguard Worker 	EROFS_ERR     = 0,
21*33b1fccfSAndroid Build Coastguard Worker 	EROFS_WARN    = 2,
22*33b1fccfSAndroid Build Coastguard Worker 	EROFS_INFO    = 3,
23*33b1fccfSAndroid Build Coastguard Worker 	EROFS_DBG     = 7,
24*33b1fccfSAndroid Build Coastguard Worker 	EROFS_MSG_MAX = 9
25*33b1fccfSAndroid Build Coastguard Worker };
26*33b1fccfSAndroid Build Coastguard Worker 
27*33b1fccfSAndroid Build Coastguard Worker #ifndef EROFS_MODNAME
28*33b1fccfSAndroid Build Coastguard Worker #define EROFS_MODNAME	"erofs"
29*33b1fccfSAndroid Build Coastguard Worker #endif
30*33b1fccfSAndroid Build Coastguard Worker #define FUNC_LINE_FMT "%s() Line[%d] "
31*33b1fccfSAndroid Build Coastguard Worker 
32*33b1fccfSAndroid Build Coastguard Worker #ifdef NDEBUG
33*33b1fccfSAndroid Build Coastguard Worker #ifndef pr_fmt
34*33b1fccfSAndroid Build Coastguard Worker #define pr_fmt(fmt)	EROFS_MODNAME ": " fmt "\n"
35*33b1fccfSAndroid Build Coastguard Worker #endif
36*33b1fccfSAndroid Build Coastguard Worker #define PR_FMT_FUNC_LINE(fmt)	pr_fmt(fmt)
37*33b1fccfSAndroid Build Coastguard Worker #else
38*33b1fccfSAndroid Build Coastguard Worker #ifndef pr_fmt
39*33b1fccfSAndroid Build Coastguard Worker #define pr_fmt(fmt)	EROFS_MODNAME ": " FUNC_LINE_FMT fmt "\n"
40*33b1fccfSAndroid Build Coastguard Worker #endif
41*33b1fccfSAndroid Build Coastguard Worker #define PR_FMT_FUNC_LINE(fmt)	pr_fmt(fmt), __func__, __LINE__
42*33b1fccfSAndroid Build Coastguard Worker #endif
43*33b1fccfSAndroid Build Coastguard Worker 
44*33b1fccfSAndroid Build Coastguard Worker void erofs_msg(int dbglv, const char *fmt, ...);
45*33b1fccfSAndroid Build Coastguard Worker 
46*33b1fccfSAndroid Build Coastguard Worker #define erofs_dbg(fmt, ...) do {			\
47*33b1fccfSAndroid Build Coastguard Worker 	if (cfg.c_dbg_lvl >= EROFS_DBG) {		\
48*33b1fccfSAndroid Build Coastguard Worker 		erofs_msg(EROFS_DBG,			\
49*33b1fccfSAndroid Build Coastguard Worker 			  "<D> " PR_FMT_FUNC_LINE(fmt),	\
50*33b1fccfSAndroid Build Coastguard Worker 			  ##__VA_ARGS__);		\
51*33b1fccfSAndroid Build Coastguard Worker 	}						\
52*33b1fccfSAndroid Build Coastguard Worker } while (0)
53*33b1fccfSAndroid Build Coastguard Worker 
54*33b1fccfSAndroid Build Coastguard Worker #define erofs_info(fmt, ...) do {			\
55*33b1fccfSAndroid Build Coastguard Worker 	if (cfg.c_dbg_lvl >= EROFS_INFO) {		\
56*33b1fccfSAndroid Build Coastguard Worker 		erofs_msg(EROFS_INFO,			\
57*33b1fccfSAndroid Build Coastguard Worker 			  "<I> " PR_FMT_FUNC_LINE(fmt),	\
58*33b1fccfSAndroid Build Coastguard Worker 			  ##__VA_ARGS__);		\
59*33b1fccfSAndroid Build Coastguard Worker 		fflush(stdout);				\
60*33b1fccfSAndroid Build Coastguard Worker 	}						\
61*33b1fccfSAndroid Build Coastguard Worker } while (0)
62*33b1fccfSAndroid Build Coastguard Worker 
63*33b1fccfSAndroid Build Coastguard Worker #define erofs_warn(fmt, ...) do {			\
64*33b1fccfSAndroid Build Coastguard Worker 	if (cfg.c_dbg_lvl >= EROFS_WARN) {		\
65*33b1fccfSAndroid Build Coastguard Worker 		erofs_msg(EROFS_WARN,			\
66*33b1fccfSAndroid Build Coastguard Worker 			  "<W> " PR_FMT_FUNC_LINE(fmt),	\
67*33b1fccfSAndroid Build Coastguard Worker 			  ##__VA_ARGS__);		\
68*33b1fccfSAndroid Build Coastguard Worker 		fflush(stdout);				\
69*33b1fccfSAndroid Build Coastguard Worker 	}						\
70*33b1fccfSAndroid Build Coastguard Worker } while (0)
71*33b1fccfSAndroid Build Coastguard Worker 
72*33b1fccfSAndroid Build Coastguard Worker #define erofs_err(fmt, ...) do {			\
73*33b1fccfSAndroid Build Coastguard Worker 	if (cfg.c_dbg_lvl >= EROFS_ERR) {		\
74*33b1fccfSAndroid Build Coastguard Worker 		erofs_msg(EROFS_ERR,			\
75*33b1fccfSAndroid Build Coastguard Worker 			  "<E> " PR_FMT_FUNC_LINE(fmt),	\
76*33b1fccfSAndroid Build Coastguard Worker 			  ##__VA_ARGS__);		\
77*33b1fccfSAndroid Build Coastguard Worker 	}						\
78*33b1fccfSAndroid Build Coastguard Worker } while (0)
79*33b1fccfSAndroid Build Coastguard Worker 
80*33b1fccfSAndroid Build Coastguard Worker #define erofs_dump(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__)
81*33b1fccfSAndroid Build Coastguard Worker 
82*33b1fccfSAndroid Build Coastguard Worker #ifdef __cplusplus
83*33b1fccfSAndroid Build Coastguard Worker }
84*33b1fccfSAndroid Build Coastguard Worker #endif
85*33b1fccfSAndroid Build Coastguard Worker 
86*33b1fccfSAndroid Build Coastguard Worker #endif
87