Improve tracef/tracelog to use the stack for small strings
[lttng-ust.git] / src / lib / lttng-ust / tracef.c
index c05c781199f8235a62972a3e8969dec5fccf5594..92911e1dac2f39a1de7e40c7413170b38dc237bd 100644 (file)
@@ -7,6 +7,7 @@
 #define _LGPL_SOURCE
 #include <stdio.h>
 #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
 #define LTTNG_UST_TRACEPOINT_DEFINE
 #include "lttng-ust-tracef-provider.h"
 
-static inline
-void lttng_ust___vtracef(const char *fmt, va_list ap)
-       __attribute__((always_inline, format(printf, 1, 0)));
-static inline
-void lttng_ust___vtracef(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_tracef___event(msg, len,
-               LTTNG_UST_CALLER_IP());
-       free(msg);
-end:
-       return;
-}
+#include "tracelog-internal.h"
 
 void lttng_ust__vtracef(const char *fmt, va_list ap)
        __attribute__((format(printf, 1, 0)));
 void lttng_ust__vtracef(const char *fmt, va_list ap)
 {
-       lttng_ust___vtracef(fmt, ap);
+       LTTNG_UST_TRACELOG_VALIST(fmt, ap,
+               lttng_ust_tracepoint_cb_lttng_ust_tracef___event,
+               msg, len, LTTNG_UST_CALLER_IP());
 }
 
 void lttng_ust__tracef(const char *fmt, ...)
        __attribute__((format(printf, 1, 2)));
 void lttng_ust__tracef(const char *fmt, ...)
 {
-       va_list ap;
-
-       va_start(ap, fmt);
-       lttng_ust___vtracef(fmt, ap);
-       va_end(ap);
+       LTTNG_UST_TRACELOG_VARARG(fmt,
+               lttng_ust_tracepoint_cb_lttng_ust_tracef___event,
+               msg, len, LTTNG_UST_CALLER_IP());
 }
This page took 0.02312 seconds and 4 git commands to generate.