Merge tag 'trace-v6.0' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux...
[linux-2.6-microblaze.git] / include / trace / events / ipi.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM ipi
4
5 #if !defined(_TRACE_IPI_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_IPI_H
7
8 #include <linux/tracepoint.h>
9
10 /**
11  * ipi_raise - called when a smp cross call is made
12  *
13  * @mask: mask of recipient CPUs for the IPI
14  * @reason: string identifying the IPI purpose
15  *
16  * It is necessary for @reason to be a static string declared with
17  * __tracepoint_string.
18  */
19 TRACE_EVENT(ipi_raise,
20
21         TP_PROTO(const struct cpumask *mask, const char *reason),
22
23         TP_ARGS(mask, reason),
24
25         TP_STRUCT__entry(
26                 __bitmask(target_cpus, nr_cpumask_bits)
27                 __field(const char *, reason)
28         ),
29
30         TP_fast_assign(
31                 __assign_bitmask(target_cpus, cpumask_bits(mask), nr_cpumask_bits);
32                 __entry->reason = reason;
33         ),
34
35         TP_printk("target_mask=%s (%s)", __get_bitmask(target_cpus), __entry->reason)
36 );
37
38 DECLARE_EVENT_CLASS(ipi_handler,
39
40         TP_PROTO(const char *reason),
41
42         TP_ARGS(reason),
43
44         TP_STRUCT__entry(
45                 __field(const char *, reason)
46         ),
47
48         TP_fast_assign(
49                 __entry->reason = reason;
50         ),
51
52         TP_printk("(%s)", __entry->reason)
53 );
54
55 /**
56  * ipi_entry - called immediately before the IPI handler
57  *
58  * @reason: string identifying the IPI purpose
59  *
60  * It is necessary for @reason to be a static string declared with
61  * __tracepoint_string, ideally the same as used with trace_ipi_raise
62  * for that IPI.
63  */
64 DEFINE_EVENT(ipi_handler, ipi_entry,
65
66         TP_PROTO(const char *reason),
67
68         TP_ARGS(reason)
69 );
70
71 /**
72  * ipi_exit - called immediately after the IPI handler returns
73  *
74  * @reason: string identifying the IPI purpose
75  *
76  * It is necessary for @reason to be a static string declared with
77  * __tracepoint_string, ideally the same as used with trace_ipi_raise for
78  * that IPI.
79  */
80 DEFINE_EVENT(ipi_handler, ipi_exit,
81
82         TP_PROTO(const char *reason),
83
84         TP_ARGS(reason)
85 );
86
87 #endif /* _TRACE_IPI_H */
88
89 /* This part must be outside protection */
90 #include <trace/define_trace.h>