Commit | Line | Data |
---|---|---|
641c659a | 1 | /* |
c0c0989a | 2 | * SPDX-License-Identifier: MIT |
641c659a | 3 | * |
c0c0989a | 4 | * Copyright (C) 2013-2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
641c659a MD |
5 | */ |
6 | ||
641c659a MD |
7 | #define _LGPL_SOURCE |
8 | #include <stdio.h> | |
9d315d6d | 9 | #include "common/macros.h" |
641c659a MD |
10 | |
11 | #define TRACEPOINT_CREATE_PROBES | |
12 | #define TRACEPOINT_DEFINE | |
13 | #include "lttng-ust-tracef-provider.h" | |
14 | ||
4199ddc7 MJ |
15 | static inline |
16 | void __lttng_ust_vtracef(const char *fmt, va_list ap) | |
17 | __attribute__((always_inline, format(printf, 1, 0))); | |
18 | static inline | |
cfd56ee1 | 19 | void __lttng_ust_vtracef(const char *fmt, va_list ap) |
641c659a | 20 | { |
641c659a | 21 | char *msg; |
cfd56ee1 | 22 | const int len = vasprintf(&msg, fmt, ap); |
641c659a | 23 | |
641c659a MD |
24 | /* len does not include the final \0 */ |
25 | if (len < 0) | |
26 | goto end; | |
0274f7f2 | 27 | lttng_ust_tracepoint_cb_lttng_ust_tracef___event(msg, len, |
171fcc6f | 28 | LTTNG_UST_CALLER_IP()); |
641c659a MD |
29 | free(msg); |
30 | end: | |
cfd56ee1 MRB |
31 | return; |
32 | } | |
33 | ||
4b4a1337 MJ |
34 | /* |
35 | * FIXME: We should include <lttng/tracef.h> for the declarations here, but it | |
36 | * fails with tracepoint magic above my paygrade. | |
37 | */ | |
38 | ||
4199ddc7 MJ |
39 | void _lttng_ust_vtracef(const char *fmt, va_list ap) |
40 | __attribute__((format(printf, 1, 0))); | |
cfd56ee1 MRB |
41 | void _lttng_ust_vtracef(const char *fmt, va_list ap) |
42 | { | |
43 | __lttng_ust_vtracef(fmt, ap); | |
44 | } | |
45 | ||
4199ddc7 MJ |
46 | void _lttng_ust_tracef(const char *fmt, ...) |
47 | __attribute__((format(printf, 1, 2))); | |
cfd56ee1 MRB |
48 | void _lttng_ust_tracef(const char *fmt, ...) |
49 | { | |
50 | va_list ap; | |
51 | ||
52 | va_start(ap, fmt); | |
53 | __lttng_ust_vtracef(fmt, ap); | |
641c659a MD |
54 | va_end(ap); |
55 | } |