X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=src%2Flogging%2Flog.h;h=89ac5fc7c54ca3e8fffb858fc1a816fec5762add;hb=ac19444e607847c47917c1cc1abfa09311e19e25;hp=993479c7fcfab48d9acb8138df5388c274d4f2f6;hpb=791642585255b23736a167fc27e4c94db2878541;p=babeltrace.git diff --git a/src/logging/log.h b/src/logging/log.h index 993479c7..89ac5fc7 100644 --- a/src/logging/log.h +++ b/src/logging/log.h @@ -1,7 +1,10 @@ /* + * SPDX-License-Identifier: MIT + * + * Copyright (c) 2016 wonder-mice + * * This is zf_log.h, modified with Babeltrace prefixes. * See . - * See logging/LICENSE in the Babeltrace source tree. */ #pragma once @@ -15,6 +18,11 @@ #include #include +/* Access private __BT_LOGGING_LEVEL_* macros. */ +#define __BT_IN_BABELTRACE_H +#include +#undef __BT_IN_BABELTRACE_H + #include "common/macros.h" #include "common/assert.h" @@ -55,13 +63,13 @@ * should be empty or very small. Choosing a right log level is as important as * providing short and self descriptive log message. */ -#define BT_LOG_TRACE BT_LOGGING_LEVEL_TRACE -#define BT_LOG_DEBUG BT_LOGGING_LEVEL_DEBUG -#define BT_LOG_INFO BT_LOGGING_LEVEL_INFO -#define BT_LOG_WARNING BT_LOGGING_LEVEL_WARNING -#define BT_LOG_ERROR BT_LOGGING_LEVEL_ERROR -#define BT_LOG_FATAL BT_LOGGING_LEVEL_FATAL -#define BT_LOG_NONE BT_LOGGING_LEVEL_NONE +#define BT_LOG_TRACE __BT_LOGGING_LEVEL_TRACE +#define BT_LOG_DEBUG __BT_LOGGING_LEVEL_DEBUG +#define BT_LOG_INFO __BT_LOGGING_LEVEL_INFO +#define BT_LOG_WARNING __BT_LOGGING_LEVEL_WARNING +#define BT_LOG_ERROR __BT_LOGGING_LEVEL_ERROR +#define BT_LOG_FATAL __BT_LOGGING_LEVEL_FATAL +#define BT_LOG_NONE __BT_LOGGING_LEVEL_NONE /* "Current" log level is a compile time check and has no runtime overhead. Log * level that is below current log level it said to be "disabled". @@ -164,12 +172,6 @@ */ #if defined(BT_LOG_OUTPUT_LEVEL) #define _BT_LOG_OUTPUT_LEVEL BT_LOG_OUTPUT_LEVEL -#else - /* - * We disallow this to make sure Babeltrace modules always - * have their own local log level. - */ - #error No log level symbol specified: please define BT_LOG_OUTPUT_LEVEL before including this header. #endif /* "Tag" is a compound string that could be associated with a log message. It @@ -332,10 +334,10 @@ * corresponding BT_LOG_DEFINE_XXX macro MUST be used exactly once somewhere. * Otherwise build will fail with link error (undefined symbol). */ -#define BT_LOG_DEFINE_TAG_PREFIX BT_HIDDEN const char *_bt_log_tag_prefix -#define BT_LOG_DEFINE_GLOBAL_FORMAT BT_HIDDEN bt_log_format _bt_log_global_format -#define BT_LOG_DEFINE_GLOBAL_OUTPUT BT_HIDDEN bt_log_output _bt_log_global_output -#define BT_LOG_DEFINE_GLOBAL_OUTPUT_LEVEL BT_HIDDEN int _bt_log_global_output_lvl +#define BT_LOG_DEFINE_TAG_PREFIX const char *_bt_log_tag_prefix +#define BT_LOG_DEFINE_GLOBAL_FORMAT bt_log_format _bt_log_global_format +#define BT_LOG_DEFINE_GLOBAL_OUTPUT bt_log_output _bt_log_global_output +#define BT_LOG_DEFINE_GLOBAL_OUTPUT_LEVEL int _bt_log_global_output_lvl /* Pointer to global format options. Direct modification is not allowed. Use * bt_log_set_mem_width() instead. Could be used to initialize bt_log_spec @@ -636,9 +638,9 @@ bt_log_spec; * See BT_LOG_OUTPUT_LEVEL for details. */ #define BT_LOG_ON_CUR_LVL(lvl, cur_lvl) \ - (BT_LOG_ENABLED((lvl)) && (lvl) >= (cur_lvl)) + G_UNLIKELY(BT_LOG_ENABLED((lvl)) && (lvl) >= (cur_lvl)) #define BT_LOG_ON(lvl) \ - (BT_LOG_ENABLED((lvl)) && (lvl) >= _BT_LOG_OUTPUT_LEVEL) + G_UNLIKELY(BT_LOG_ENABLED((lvl)) && (lvl) >= _BT_LOG_OUTPUT_LEVEL) #define BT_LOG_ON_TRACE BT_LOG_ON(BT_LOG_TRACE) #define BT_LOG_ON_DEBUG BT_LOG_ON(BT_LOG_DEBUG) #define BT_LOG_ON_INFO BT_LOG_ON(BT_LOG_INFO) @@ -656,49 +658,41 @@ extern bt_log_output _bt_log_global_output; extern int _bt_log_global_output_lvl; extern const bt_log_spec _bt_log_stderr_spec; -BT_HIDDEN void _bt_log_write_d( const char *const func, const char *const file, const unsigned line, const int lvl, const char *const tag, const char *const fmt, ...) _BT_LOG_PRINTFLIKE(6, 7); -BT_HIDDEN void _bt_log_write_aux_d( const char *const func, const char *const file, const unsigned line, const bt_log_spec *const log, const int lvl, const char *const tag, const char *const fmt, ...) _BT_LOG_PRINTFLIKE(7, 8); -BT_HIDDEN void _bt_log_write( const int lvl, const char *const tag, const char *const fmt, ...) _BT_LOG_PRINTFLIKE(3, 4); -BT_HIDDEN void _bt_log_write_aux( const bt_log_spec *const log, const int lvl, const char *const tag, const char *const fmt, ...) _BT_LOG_PRINTFLIKE(4, 5); -BT_HIDDEN void _bt_log_write_mem_d( const char *const func, const char *const file, const unsigned line, const int lvl, const char *const tag, const void *const d, const unsigned d_sz, const char *const fmt, ...) _BT_LOG_PRINTFLIKE(8, 9); -BT_HIDDEN void _bt_log_write_mem_aux_d( const char *const func, const char *const file, const unsigned line, const bt_log_spec *const log, const int lvl, const char *const tag, const void *const d, const unsigned d_sz, const char *const fmt, ...) _BT_LOG_PRINTFLIKE(9, 10); -BT_HIDDEN void _bt_log_write_mem( const int lvl, const char *const tag, const void *const d, const unsigned d_sz, const char *const fmt, ...) _BT_LOG_PRINTFLIKE(5, 6); -BT_HIDDEN void _bt_log_write_mem_aux( const bt_log_spec *const log, const int lvl, const char *const tag, const void *const d, const unsigned d_sz, @@ -862,6 +856,7 @@ static _BT_LOG_INLINE void _bt_log_unused(const int dummy, ...) {(void)dummy;} BT_LOG_WRITE_MEM(log, BT_LOG_TRACE, _BT_LOG_TAG, d, d_sz, __VA_ARGS__) #else #define BT_LOGT(...) _BT_LOG_UNUSED(__VA_ARGS__) + #define BT_LOGT_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGT_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGT_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGT_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) @@ -880,6 +875,7 @@ static _BT_LOG_INLINE void _bt_log_unused(const int dummy, ...) {(void)dummy;} BT_LOG_WRITE_MEM_AUX(log, BT_LOG_DEBUG, _BT_LOG_TAG, d, d_sz, __VA_ARGS__) #else #define BT_LOGD(...) _BT_LOG_UNUSED(__VA_ARGS__) + #define BT_LOGD_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGD_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGD_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGD_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) @@ -898,6 +894,7 @@ static _BT_LOG_INLINE void _bt_log_unused(const int dummy, ...) {(void)dummy;} BT_LOG_WRITE_MEM_AUX(log, BT_LOG_INFO, _BT_LOG_TAG, d, d_sz, __VA_ARGS__) #else #define BT_LOGI(...) _BT_LOG_UNUSED(__VA_ARGS__) + #define BT_LOGI_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGI_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGI_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGI_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) @@ -916,6 +913,7 @@ static _BT_LOG_INLINE void _bt_log_unused(const int dummy, ...) {(void)dummy;} BT_LOG_WRITE_MEM_AUX(log, BT_LOG_WARNING, _BT_LOG_TAG, d, d_sz, __VA_ARGS__) #else #define BT_LOGW(...) _BT_LOG_UNUSED(__VA_ARGS__) + #define BT_LOGW_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGW_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGW_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGW_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) @@ -934,6 +932,7 @@ static _BT_LOG_INLINE void _bt_log_unused(const int dummy, ...) {(void)dummy;} BT_LOG_WRITE_MEM_AUX(log, BT_LOG_ERROR, _BT_LOG_TAG, d, d_sz, __VA_ARGS__) #else #define BT_LOGE(...) _BT_LOG_UNUSED(__VA_ARGS__) + #define BT_LOGE_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGE_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGE_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGE_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) @@ -952,6 +951,7 @@ static _BT_LOG_INLINE void _bt_log_unused(const int dummy, ...) {(void)dummy;} BT_LOG_WRITE_MEM_AUX(log, BT_LOG_FATAL, _BT_LOG_TAG, d, d_sz, __VA_ARGS__) #else #define BT_LOGF(...) _BT_LOG_UNUSED(__VA_ARGS__) + #define BT_LOGF_ERRNO(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGF_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGF_MEM(...) _BT_LOG_UNUSED(__VA_ARGS__) #define BT_LOGF_MEM_AUX(...) _BT_LOG_UNUSED(__VA_ARGS__) @@ -982,7 +982,6 @@ extern "C" { */ enum { BT_LOG_OUT_STDERR_MASK = BT_LOG_PUT_STD }; -BT_HIDDEN void bt_log_out_stderr_callback(const bt_log_message *const msg, void *arg); #define BT_LOG_OUT_STDERR BT_LOG_OUT_STDERR_MASK, 0, bt_log_out_stderr_callback @@ -1111,7 +1110,7 @@ end: extern int _level_sym #define BT_LOG_INIT_LOG_LEVEL(_level_sym, _env_var) \ - BT_HIDDEN int _level_sym = BT_LOG_NONE; \ + int _level_sym = BT_LOG_NONE; \ static \ void __attribute__((constructor)) _bt_log_level_ctor(void) \ { \