Visibility hidden by default
[babeltrace.git] / src / logging / log.h
index 20754c1f1d422b5c3ac67043f9ede4a7e3c23a75..ce4299fbb994aa5417195e0b6472948900c9d463 100644 (file)
@@ -1,7 +1,10 @@
 /*
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (c) 2016 wonder-mice
+ *
  * This is zf_log.h, modified with Babeltrace prefixes.
  * See <https://github.com/wonder-mice/zf_log/>.
- * See logging/LICENSE in the Babeltrace source tree.
  */
 
 #pragma once
 #include <string.h>
 #include <babeltrace2/babeltrace.h>
 
+/* Access private __BT_LOGGING_LEVEL_* macros. */
+#define __BT_IN_BABELTRACE_H
+#include <babeltrace2/logging-defs.h>
+#undef __BT_IN_BABELTRACE_H
+
 #include "common/macros.h"
 #include "common/assert.h"
 
  * 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".
 #define BT_LOG_SRCLOC_SHORT 1
 #define BT_LOG_SRCLOC_LONG  2
 
-/* Source location format is configured per compilation module (.c/.cpp/.m
- * file) by defining BT_LOG_DEF_SRCLOC or BT_LOG_SRCLOC. BT_LOG_SRCLOC has
- * higer priority and when defined overrides value provided by
- * BT_LOG_DEF_SRCLOC.
- *
- * Common practice is to define default format with BT_LOG_DEF_SRCLOC in
- * build script (e.g. Makefile, CMakeLists.txt, gyp, etc.) for the entire
- * project or target:
- *
- *   CC_ARGS := -DBT_LOG_DEF_SRCLOC=BT_LOG_SRCLOC_LONG
- *
- * And when necessary to override it with BT_LOG_SRCLOC in .c/.cpp/.m files
- * before including bt_log.h:
- *
- *   #define BT_LOG_SRCLOC BT_LOG_SRCLOC_NONE
- *   #include "logging.h"
- *
- * If both BT_LOG_DEF_SRCLOC and BT_LOG_SRCLOC are undefined, then
- * BT_LOG_SRCLOC_NONE will be used for release builds (BT_DEBUG_MODE is
- * NOT defined) and BT_LOG_SRCLOC_LONG otherwise (BT_DEBUG_MODE is
- * defined).
- */
-#if defined(BT_LOG_SRCLOC)
-       #define _BT_LOG_SRCLOC BT_LOG_SRCLOC
-#elif defined(BT_LOG_DEF_SRCLOC)
-       #define _BT_LOG_SRCLOC BT_LOG_DEF_SRCLOC
-#else
-       #ifdef BT_DEBUG_MODE
-               #define _BT_LOG_SRCLOC BT_LOG_SRCLOC_LONG
-       #else
-               #define _BT_LOG_SRCLOC BT_LOG_SRCLOC_NONE
-       #endif
-#endif
+#define _BT_LOG_SRCLOC BT_LOG_SRCLOC_LONG
+
 #if BT_LOG_SRCLOC_LONG == _BT_LOG_SRCLOC
        #define _BT_LOG_SRCLOC_FUNCTION _BT_LOG_FUNCTION
 #else
  * 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
@@ -667,9 +644,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)
@@ -687,49 +664,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,
@@ -893,6 +862,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__)
@@ -911,6 +881,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__)
@@ -929,6 +900,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__)
@@ -947,6 +919,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__)
@@ -965,6 +938,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__)
@@ -983,6 +957,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__)
@@ -1013,7 +988,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
 
@@ -1142,7 +1116,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)      \
        {                                                               \
This page took 0.027887 seconds and 4 git commands to generate.