1 // SPDX-FileCopyrightText: 2013-2015 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
3 // SPDX-License-Identifier: MIT
5 #ifndef _LTTNG_UST_TRACELOG_H
6 #define _LTTNG_UST_TRACELOG_H
8 #include <lttng/ust-api-compat.h>
9 #include <lttng/tp/lttng-ust-tracelog.h>
15 #define LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(level) \
16 extern void lttng_ust__tracelog_##level(const char *file, \
17 int line, const char *func, const char *fmt, ...) \
18 __attribute__ ((format(printf, 4, 5))); \
20 extern void lttng_ust__vtracelog_##level(const char *file, \
21 int line, const char *func, const char *fmt, \
23 __attribute__ ((format(printf, 4, 0)));
25 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG
);
26 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT
);
27 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT
);
28 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR
);
29 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING
);
30 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE
);
31 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO
);
32 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM
);
33 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM
);
34 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS
);
35 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE
);
36 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT
);
37 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION
);
38 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE
);
39 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG
);
41 #undef LTTNG_UST_TP_TRACELOG_CB_TEMPLATE
43 #define lttng_ust_tracelog(level, fmt, ...) \
45 LTTNG_UST_STAP_PROBEV(tracepoint_lttng_ust_tracelog, level, ## __VA_ARGS__); \
46 if (caa_unlikely(lttng_ust_tracepoint_lttng_ust_tracelog___##level.state)) \
47 lttng_ust__tracelog_##level(__FILE__, __LINE__, __func__, \
48 fmt, ## __VA_ARGS__); \
51 #define lttng_ust_vtracelog(level, fmt, ap) \
53 if (caa_unlikely(lttng_ust_tracepoint_lttng_ust_tracelog___##level.state)) \
54 lttng_ust__vtracelog_##level(__FILE__, __LINE__, __func__, \
58 #if LTTNG_UST_COMPAT_API(0)
59 #define TP_TRACELOG_CB_TEMPLATE LTTNG_UST_TP_TRACELOG_CB_TEMPLATE
60 #define tracelog lttng_ust_tracelog
67 #endif /* _LTTNG_UST_TRACELOG_H */