1/* SPDX-License-Identifier: GPL-2.0 */
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM initcall
4
5#if !defined(_TRACE_INITCALL_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_INITCALL_H
7
8#include <linux/tracepoint.h>
9
10TRACE_EVENT(initcall_level,
11
12	TP_PROTO(const char *level),
13
14	TP_ARGS(level),
15
16	TP_STRUCT__entry(
17		__string(level, level)
18	),
19
20	TP_fast_assign(
21		__assign_str(level, level);
22	),
23
24	TP_printk("level=%s", __get_str(level))
25);
26
27TRACE_EVENT(initcall_start,
28
29	TP_PROTO(initcall_t func),
30
31	TP_ARGS(func),
32
33	TP_STRUCT__entry(
34		/*
35		 * Use field_struct to avoid is_signed_type()
36		 * comparison of a function pointer
37		 */
38		__field_struct(initcall_t, func)
39	),
40
41	TP_fast_assign(
42		__entry->func = func;
43	),
44
45	TP_printk("func=%pS", __entry->func)
46);
47
48TRACE_EVENT(initcall_finish,
49
50	TP_PROTO(initcall_t func, int ret),
51
52	TP_ARGS(func, ret),
53
54	TP_STRUCT__entry(
55		/*
56		 * Use field_struct to avoid is_signed_type()
57		 * comparison of a function pointer
58		 */
59		__field_struct(initcall_t,	func)
60		__field(int,			ret)
61	),
62
63	TP_fast_assign(
64		__entry->func = func;
65		__entry->ret = ret;
66	),
67
68	TP_printk("func=%pS ret=%d", __entry->func, __entry->ret)
69);
70
71#endif /* if !defined(_TRACE_GPIO_H) || defined(TRACE_HEADER_MULTI_READ) */
72
73/* This part must be outside protection */
74#include <trace/define_trace.h>
75