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