cleanup: function attribute 'format'
[lttng-ust.git] / liblttng-ust / tracelog.c
CommitLineData
0cb03c85 1/*
c0c0989a 2 * SPDX-License-Identifier: MIT
0cb03c85 3 *
c0c0989a 4 * Copyright (C) 2013-2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
0cb03c85
MD
5 */
6
0cb03c85
MD
7#define _LGPL_SOURCE
8#include <stdio.h>
864a1eda 9#include <ust-helper.h>
0cb03c85
MD
10
11#define TRACEPOINT_CREATE_PROBES
12#define TRACEPOINT_DEFINE
13#include "lttng-ust-tracelog-provider.h"
14
15#define TRACELOG_CB(level) \
4199ddc7
MJ
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 \
bd9bb3c7 23 void __lttng_ust_vtracelog_##level(const char *file, \
0cb03c85 24 int line, const char *func, \
bd9bb3c7 25 const char *fmt, va_list ap) \
0cb03c85 26 { \
0cb03c85 27 char *msg; \
bd9bb3c7 28 const int len = vasprintf(&msg, fmt, ap); \
0cb03c85 29 \
0cb03c85
MD
30 /* len does not include the final \0 */ \
31 if (len < 0) \
32 goto end; \
33 __tracepoint_cb_lttng_ust_tracelog___##level(file, \
34 line, func, msg, len, \
171fcc6f 35 LTTNG_UST_CALLER_IP()); \
0cb03c85
MD
36 free(msg); \
37 end: \
bd9bb3c7
MRB
38 return; \
39 } \
40 \
4199ddc7
MJ
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 \
bd9bb3c7
MRB
46 void _lttng_ust_vtracelog_##level(const char *file, \
47 int line, const char *func, \
48 const char *fmt, va_list ap) \
49 { \
50 __lttng_ust_vtracelog_##level(file, line, func, fmt, ap); \
51 } \
52 \
4199ddc7
MJ
53 void _lttng_ust_tracelog_##level(const char *file, \
54 int line, const char *func, \
55 const char *fmt, ...) \
56 __attribute__ ((format(printf, 4, 5))); \
57 \
bd9bb3c7
MRB
58 void _lttng_ust_tracelog_##level(const char *file, \
59 int line, const char *func, \
60 const char *fmt, ...) \
61 { \
62 va_list ap; \
63 \
64 va_start(ap, fmt); \
65 __lttng_ust_vtracelog_##level(file, line, func, fmt, ap); \
0cb03c85
MD
66 va_end(ap); \
67 }
68
c4d667ed
MD
69TRACELOG_CB(TRACE_EMERG)
70TRACELOG_CB(TRACE_ALERT)
71TRACELOG_CB(TRACE_CRIT)
72TRACELOG_CB(TRACE_ERR)
73TRACELOG_CB(TRACE_WARNING)
74TRACELOG_CB(TRACE_NOTICE)
75TRACELOG_CB(TRACE_INFO)
76TRACELOG_CB(TRACE_DEBUG_SYSTEM)
77TRACELOG_CB(TRACE_DEBUG_PROGRAM)
78TRACELOG_CB(TRACE_DEBUG_PROCESS)
79TRACELOG_CB(TRACE_DEBUG_MODULE)
80TRACELOG_CB(TRACE_DEBUG_UNIT)
81TRACELOG_CB(TRACE_DEBUG_FUNCTION)
82TRACELOG_CB(TRACE_DEBUG_LINE)
83TRACELOG_CB(TRACE_DEBUG)
This page took 0.032144 seconds and 4 git commands to generate.