2 * SPDX-License-Identifier: MIT
4 * Copyright (C) 2013-2015 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
7 #ifndef _LTTNG_UST_TRACELOG_H
8 #define _LTTNG_UST_TRACELOG_H
10 #include <lttng/ust-api-compat.h>
11 #include <lttng/tp/lttng-ust-tracelog.h>
17 #define LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(level) \
18 extern void lttng_ust__tracelog_##level(const char *file, \
19 int line, const char *func, const char *fmt, ...) \
20 __attribute__ ((format(printf, 4, 5))); \
22 extern void lttng_ust__vtracelog_##level(const char *file, \
23 int line, const char *func, const char *fmt, \
25 __attribute__ ((format(printf, 4, 0)));
27 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG
);
28 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT
);
29 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT
);
30 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR
);
31 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING
);
32 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE
);
33 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO
);
34 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM
);
35 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM
);
36 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS
);
37 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE
);
38 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT
);
39 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION
);
40 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE
);
41 LTTNG_UST_TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG
);
43 #undef LTTNG_UST_TP_TRACELOG_CB_TEMPLATE
45 #define lttng_ust_tracelog(level, fmt, ...) \
47 LTTNG_UST_STAP_PROBEV(tracepoint_lttng_ust_tracelog, level, ## __VA_ARGS__); \
48 if (caa_unlikely(lttng_ust_tracepoint_lttng_ust_tracelog___##level.state)) \
49 lttng_ust__tracelog_##level(__FILE__, __LINE__, __func__, \
50 fmt, ## __VA_ARGS__); \
53 #define lttng_ust_vtracelog(level, fmt, ap) \
55 if (caa_unlikely(lttng_ust_tracepoint_lttng_ust_tracelog___##level.state)) \
56 lttng_ust__vtracelog_##level(__FILE__, __LINE__, __func__, \
60 #if LTTNG_UST_COMPAT_API(0)
61 #define TP_TRACELOG_CB_TEMPLATE LTTNG_UST_TP_TRACELOG_CB_TEMPLATE
62 #define tracelog lttng_ust_tracelog
69 #endif /* _LTTNG_UST_TRACELOG_H */