Merge remote-tracking branch 'lsk/v3.10/topic/aosp' into linux-linaro-lsk-android
[firefly-linux-kernel-4.4.55.git] / include / trace / events / arm-ipi.h
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM arm-ipi
3
4 #if !defined(_TRACE_ARM_IPI_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_ARM_IPI_H
6
7 #include <linux/tracepoint.h>
8
9 #define show_arm_ipi_name(val)                          \
10         __print_symbolic(val,                           \
11                          { 0, "IPI_WAKEUP" },           \
12                          { 1, "IPI_TIMER" },            \
13                          { 2, "IPI_RESCHEDULE" },               \
14                          { 3, "IPI_CALL_FUNC" },                \
15                          { 4, "IPI_CALL_FUNC_SINGLE" },         \
16                          { 5, "IPI_CPU_STOP" }, \
17                          { 6, "IPI_COMPLETION" },               \
18                          { 7, "IPI_CPU_BACKTRACE" })
19
20 DECLARE_EVENT_CLASS(arm_ipi,
21
22         TP_PROTO(unsigned int ipi_nr),
23
24         TP_ARGS(ipi_nr),
25
26         TP_STRUCT__entry(
27                 __field(        unsigned int,   ipi     )
28         ),
29
30         TP_fast_assign(
31                 __entry->ipi = ipi_nr;
32         ),
33
34         TP_printk("ipi=%u [action=%s]", __entry->ipi,
35                 show_arm_ipi_name(__entry->ipi))
36 );
37
38 /**
39  * arm_ipi_entry - called in the arm-generic ipi handler immediately before
40  *                 entering ipi-type handler
41  * @ipi_nr:  ipi number
42  *
43  * When used in combination with the arm_ipi_exit tracepoint
44  * we can determine the ipi handler runtine.
45  */
46 DEFINE_EVENT(arm_ipi, arm_ipi_entry,
47
48         TP_PROTO(unsigned int ipi_nr),
49
50         TP_ARGS(ipi_nr)
51 );
52
53 /**
54  * arm_ipi_exit - called in the arm-generic ipi handler immediately
55  *                after the ipi-type handler returns
56  * @ipi_nr:  ipi number
57  *
58  * When used in combination with the arm_ipi_entry tracepoint
59  * we can determine the ipi handler runtine.
60  */
61 DEFINE_EVENT(arm_ipi, arm_ipi_exit,
62
63         TP_PROTO(unsigned int ipi_nr),
64
65         TP_ARGS(ipi_nr)
66 );
67
68 /**
69  * arm_ipi_send - called as the ipi target mask is built, immediately
70  *                before the register is written
71  * @ipi_nr:  ipi number
72  * @dest:    cpu to send to
73  *
74  * When used in combination with the arm_ipi_entry tracepoint
75  * we can determine the ipi raise to run latency.
76  */
77 TRACE_EVENT(arm_ipi_send,
78
79         TP_PROTO(unsigned int ipi_nr, int dest),
80
81         TP_ARGS(ipi_nr, dest),
82
83         TP_STRUCT__entry(
84                 __field(        unsigned int,   ipi     )
85                 __field(        int                     ,       dest )
86         ),
87
88         TP_fast_assign(
89                 __entry->ipi = ipi_nr;
90                 __entry->dest = dest;
91         ),
92
93         TP_printk("dest=%d ipi=%u [action=%s]", __entry->dest,
94                         __entry->ipi, show_arm_ipi_name(__entry->ipi))
95 );
96
97 #endif /*  _TRACE_ARM_IPI_H */
98
99 /* This part must be outside protection */
100 #include <trace/define_trace.h>