X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ust%2Ftracelog.c;h=bd38032cba31d30654bbc4a67a0d7bcc76030bab;hb=1c0569ec0d094571d181d1fce53ecfce8877614f;hp=8147d7a339abc9383ba31e4816779811c0efaa36;hpb=85f8af7b80f5d52ab099e7f73d3ac8f59c6bb1e9;p=lttng-ust.git diff --git a/src/lib/lttng-ust/tracelog.c b/src/lib/lttng-ust/tracelog.c index 8147d7a3..bd38032c 100644 --- a/src/lib/lttng-ust/tracelog.c +++ b/src/lib/lttng-ust/tracelog.c @@ -7,6 +7,7 @@ #define _LGPL_SOURCE #include #include "common/macros.h" +#include "common/tracer.h" /* The tracepoint definition is public, but the provider definition is hidden. */ #define LTTNG_UST_TRACEPOINT_PROVIDER_HIDDEN_DEFINITION @@ -15,32 +16,9 @@ #define LTTNG_UST_TRACEPOINT_DEFINE #include "lttng-ust-tracelog-provider.h" +#include "tracelog-internal.h" + #define LTTNG_UST_TRACELOG_CB(level) \ - static inline \ - void lttng_ust___vtracelog_##level(const char *file, \ - int line, const char *func, \ - const char *fmt, va_list ap) \ - __attribute__((always_inline, format(printf, 4, 0))); \ - \ - static inline \ - void lttng_ust___vtracelog_##level(const char *file, \ - int line, const char *func, \ - const char *fmt, va_list ap) \ - { \ - char *msg; \ - const int len = vasprintf(&msg, fmt, ap); \ - \ - /* len does not include the final \0 */ \ - if (len < 0) \ - goto end; \ - lttng_ust_tracepoint_cb_lttng_ust_tracelog___##level(file, \ - line, func, msg, len, \ - 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) \ @@ -53,7 +31,9 @@ int line, const char *func, \ const char *fmt, va_list ap) \ { \ - lttng_ust___vtracelog_##level(file, line, func, fmt, ap); \ + LTTNG_UST_TRACELOG_VALIST(fmt, ap, \ + lttng_ust_tracepoint_cb_lttng_ust_tracelog___##level, \ + file, line, func, msg, len, LTTNG_UST_CALLER_IP()); \ } \ \ void lttng_ust__tracelog_##level(const char *file, \ @@ -68,11 +48,9 @@ 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); \ + LTTNG_UST_TRACELOG_VARARG(fmt, \ + lttng_ust_tracepoint_cb_lttng_ust_tracelog___##level, \ + file, line, func, msg, len, LTTNG_UST_CALLER_IP()); \ } LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG)