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/tp/lttng-ust-tracelog.h>
16 #define TP_TRACELOG_CB_TEMPLATE(level) \
17 extern void _lttng_ust_tracelog_##level(const char *file, \
18 int line, const char *func, const char *fmt, ...) \
19 __attribute__ ((format(printf, 4, 5))); \
21 extern void _lttng_ust_vtracelog_##level(const char *file, \
22 int line, const char *func, const char *fmt, \
24 __attribute__ ((format(printf, 4, 0)));
26 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG
);
27 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT
);
28 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT
);
29 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR
);
30 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING
);
31 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE
);
32 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO
);
33 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM
);
34 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM
);
35 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS
);
36 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE
);
37 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT
);
38 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION
);
39 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE
);
40 TP_TRACELOG_CB_TEMPLATE(LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG
);
42 #undef TP_TRACELOG_CB_TEMPLATE
44 #define tracelog(level, fmt, ...) \
46 LTTNG_UST_STAP_PROBEV(tracepoint_lttng_ust_tracelog, level, ## __VA_ARGS__); \
47 if (caa_unlikely(lttng_ust_tracepoint_lttng_ust_tracelog___##level.state)) \
48 _lttng_ust_tracelog_##level(__FILE__, __LINE__, __func__, \
49 fmt, ## __VA_ARGS__); \
52 #define vtracelog(level, fmt, ap) \
54 if (caa_unlikely(lttng_ust_tracepoint_lttng_ust_tracelog___##level.state)) \
55 _lttng_ust_vtracelog_##level(__FILE__, __LINE__, __func__, \
63 #endif /* _LTTNG_UST_TRACELOG_H */