X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Ferror.cpp;h=26d69f48b2f9130e15ba13e9fb54764067e9cfb0;hb=164bff35f233e2b566344eca0d31b448dbc595aa;hp=1bf9491c27d8c8295716722c63e3e9ccd59e86dd;hpb=cd9adb8b829564212158943a0d279bb35322ab30;p=lttng-tools.git diff --git a/src/common/error.cpp b/src/common/error.cpp index 1bf9491c2..26d69f48b 100644 --- a/src/common/error.cpp +++ b/src/common/error.cpp @@ -16,19 +16,23 @@ #include #include +#include #include #include #include +namespace { /* * lttng_opt_abort_on_error: unset: -1, disabled: 0, enabled: 1. * Controlled by the LTTNG_ABORT_ON_ERROR environment variable. */ -static int lttng_opt_abort_on_error = -1; +int lttng_opt_abort_on_error = -1; /* TLS variable that contains the time of one single log entry. */ -DEFINE_URCU_TLS(struct log_time, error_log_time); -DEFINE_URCU_TLS(const char *, logger_thread_name); +thread_local struct log_time error_log_time; +} /* namespace */ + +thread_local const char *logger_thread_name; const char *log_add_time() { @@ -50,8 +54,8 @@ const char *log_add_time() } /* Format time in the TLS variable. */ - ret = snprintf(URCU_TLS(error_log_time).str, - sizeof(URCU_TLS(error_log_time).str), + ret = snprintf(error_log_time.str, + sizeof(error_log_time.str), "%02d:%02d:%02d.%09ld", tm.tm_hour, tm.tm_min, @@ -62,7 +66,7 @@ const char *log_add_time() } errno = errsv; - return URCU_TLS(error_log_time).str; + return error_log_time.str; error: /* Return an empty string on error so logging is not affected. */ @@ -75,7 +79,7 @@ void logger_set_thread_name(const char *name, bool set_pthread_name) int ret; LTTNG_ASSERT(name); - URCU_TLS(logger_thread_name) = name; + logger_thread_name = name; if (set_pthread_name) { ret = lttng_thread_setname(name); @@ -449,3 +453,12 @@ void lttng_abort_on_error(void) abort(); } } + +[[noreturn]] void +lttng::logging::details::die_formatting_exception(const char *format, + const std::exception& formatting_exception) +{ + std::cerr << "Error occurred while formatting logging message: msg=`" << format + << "`: " << formatting_exception.what(); + abort(); +}