X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Ftracelog.c;h=3d48b1eddd1306f918b3f0bb4f78c1ba6306caca;hb=c0c0989ab70574e09b2f7e8b48c2da6af664a849;hp=0e42b4b163d6bbdc61bf1556f8e30bb0e9376c99;hpb=0cb03c850dedb8f1e7f11e2e47764aa4d3ba313b;p=lttng-ust.git diff --git a/liblttng-ust/tracelog.c b/liblttng-ust/tracelog.c index 0e42b4b1..3d48b1ed 100644 --- a/liblttng-ust/tracelog.c +++ b/liblttng-ust/tracelog.c @@ -1,67 +1,67 @@ /* - * Copyright (C) 2013-2014 Mathieu Desnoyers + * SPDX-License-Identifier: MIT * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright (C) 2013-2014 Mathieu Desnoyers */ -#define _GNU_SOURCE #define _LGPL_SOURCE #include +#include #define TRACEPOINT_CREATE_PROBES #define TRACEPOINT_DEFINE #include "lttng-ust-tracelog-provider.h" #define TRACELOG_CB(level) \ - void _lttng_ust_tracelog_##level(const char *file, \ + static inline __attribute__((always_inline)) \ + void __lttng_ust_vtracelog_##level(const char *file, \ int line, const char *func, \ - const char *fmt, ...) \ + const char *fmt, va_list ap) \ { \ - va_list ap; \ char *msg; \ - int len; \ + const int len = vasprintf(&msg, fmt, ap); \ \ - va_start(ap, fmt); \ - len = vasprintf(&msg, fmt, ap); \ /* len does not include the final \0 */ \ if (len < 0) \ goto end; \ __tracepoint_cb_lttng_ust_tracelog___##level(file, \ line, func, msg, len, \ - __builtin_return_address(0)); \ + LTTNG_UST_CALLER_IP()); \ free(msg); \ end: \ + return; \ + } \ + \ + void _lttng_ust_vtracelog_##level(const char *file, \ + int line, const char *func, \ + const char *fmt, va_list ap) \ + { \ + __lttng_ust_vtracelog_##level(file, line, func, fmt, ap); \ + } \ + \ + void _lttng_ust_tracelog_##level(const char *file, \ + int line, const char *func, \ + const char *fmt, ...) \ + { \ + va_list ap; \ + \ + va_start(ap, fmt); \ + __lttng_ust_vtracelog_##level(file, line, func, fmt, ap); \ va_end(ap); \ } -TRACELOG_CB(emerg) -TRACELOG_CB(alert) -TRACELOG_CB(crit) -TRACELOG_CB(err) -TRACELOG_CB(warning) -TRACELOG_CB(notice) -TRACELOG_CB(info) -TRACELOG_CB(debug_system) -TRACELOG_CB(debug_program) -TRACELOG_CB(debug_process) -TRACELOG_CB(debug_module) -TRACELOG_CB(debug_unit) -TRACELOG_CB(debug_function) -TRACELOG_CB(debug_line) -TRACELOG_CB(debug) +TRACELOG_CB(TRACE_EMERG) +TRACELOG_CB(TRACE_ALERT) +TRACELOG_CB(TRACE_CRIT) +TRACELOG_CB(TRACE_ERR) +TRACELOG_CB(TRACE_WARNING) +TRACELOG_CB(TRACE_NOTICE) +TRACELOG_CB(TRACE_INFO) +TRACELOG_CB(TRACE_DEBUG_SYSTEM) +TRACELOG_CB(TRACE_DEBUG_PROGRAM) +TRACELOG_CB(TRACE_DEBUG_PROCESS) +TRACELOG_CB(TRACE_DEBUG_MODULE) +TRACELOG_CB(TRACE_DEBUG_UNIT) +TRACELOG_CB(TRACE_DEBUG_FUNCTION) +TRACELOG_CB(TRACE_DEBUG_LINE) +TRACELOG_CB(TRACE_DEBUG)