xref: /linux/include/trace/events/printk.h (revision 4b132aacb0768ac1e652cf517097ea6f237214b9)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM printk
4 
5 #if !defined(_TRACE_PRINTK_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_PRINTK_H
7 
8 #include <linux/tracepoint.h>
9 
10 TRACE_EVENT(console,
11 	TP_PROTO(const char *text, size_t len),
12 
13 	TP_ARGS(text, len),
14 
15 	TP_STRUCT__entry(
16 		__dynamic_array(char, msg, len + 1)
17 	),
18 
19 	TP_fast_assign(
20 		/*
21 		 * Each trace entry is printed in a new line.
22 		 * If the msg finishes with '\n', cut it off
23 		 * to avoid blank lines in the trace.
24 		 */
25 		if ((len > 0) && (text[len-1] == '\n'))
26 			len -= 1;
27 
28 		memcpy(__get_str(msg), text, len);
29 		__get_str(msg)[len] = 0;
30 	),
31 
32 	TP_printk("%s", __get_str(msg))
33 );
34 #endif /* _TRACE_PRINTK_H */
35 
36 /* This part must be outside protection */
37 #include <trace/define_trace.h>
38