4a10a641966b6ca7bcda7d9aae4af0d78d9d33a0
[lttng-ust.git] / src / lib / lttng-ust / tracelog.c
1 /*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright (C) 2013-2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
5 */
6
7 #define _LGPL_SOURCE
8 #include <stdio.h>
9 #include "common/macros.h"
10
11 #define LTTNG_UST_TRACEPOINT_CREATE_PROBES
12 #define LTTNG_UST_TRACEPOINT_DEFINE
13 #include "lttng-ust-tracelog-provider.h"
14
15 #define LTTNG_UST_TRACELOG_CB(level) \
16 static inline \
17 void lttng_ust___vtracelog_##level(const char *file, \
18 int line, const char *func, \
19 const char *fmt, va_list ap) \
20 __attribute__((always_inline, format(printf, 4, 0))); \
21 \
22 static inline \
23 void lttng_ust___vtracelog_##level(const char *file, \
24 int line, const char *func, \
25 const char *fmt, va_list ap) \
26 { \
27 char *msg; \
28 const int len = vasprintf(&msg, fmt, ap); \
29 \
30 /* len does not include the final \0 */ \
31 if (len < 0) \
32 goto end; \
33 lttng_ust_tracepoint_cb_lttng_ust_tracelog___##level(file, \
34 line, func, msg, len, \
35 LTTNG_UST_CALLER_IP()); \
36 free(msg); \
37 end: \
38 return; \
39 } \
40 \
41 void lttng_ust__vtracelog_##level(const char *file, \
42 int line, const char *func, \
43 const char *fmt, va_list ap) \
44 __attribute__ ((format(printf, 4, 0))); \
45 \
46 void lttng_ust__vtracelog_##level(const char *file, \
47 int line, const char *func, \
48 const char *fmt, va_list ap); \
49 void lttng_ust__vtracelog_##level(const char *file, \
50 int line, const char *func, \
51 const char *fmt, va_list ap) \
52 { \
53 lttng_ust___vtracelog_##level(file, line, func, fmt, ap); \
54 } \
55 \
56 void lttng_ust__tracelog_##level(const char *file, \
57 int line, const char *func, \
58 const char *fmt, ...) \
59 __attribute__ ((format(printf, 4, 5))); \
60 \
61 void lttng_ust__tracelog_##level(const char *file, \
62 int line, const char *func, \
63 const char *fmt, ...); \
64 void lttng_ust__tracelog_##level(const char *file, \
65 int line, const char *func, \
66 const char *fmt, ...) \
67 { \
68 va_list ap; \
69 \
70 va_start(ap, fmt); \
71 lttng_ust___vtracelog_##level(file, line, func, fmt, ap); \
72 va_end(ap); \
73 }
74
75 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG)
76 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT)
77 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT)
78 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR)
79 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING)
80 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE)
81 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO)
82 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM)
83 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM)
84 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS)
85 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE)
86 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT)
87 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION)
88 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE)
89 LTTNG_UST_TRACELOG_CB(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG)
This page took 0.030216 seconds and 3 git commands to generate.