]>
Commit | Line | Data |
---|---|---|
d5915816 JF |
1 | #ifdef CONFIG_PREEMPTIRQ_EVENTS |
2 | ||
3 | #undef TRACE_SYSTEM | |
4 | #define TRACE_SYSTEM preemptirq | |
5 | ||
6 | #if !defined(_TRACE_PREEMPTIRQ_H) || defined(TRACE_HEADER_MULTI_READ) | |
7 | #define _TRACE_PREEMPTIRQ_H | |
8 | ||
9 | #include <linux/ktime.h> | |
10 | #include <linux/tracepoint.h> | |
11 | #include <linux/string.h> | |
12 | #include <asm/sections.h> | |
13 | ||
14 | DECLARE_EVENT_CLASS(preemptirq_template, | |
15 | ||
16 | TP_PROTO(unsigned long ip, unsigned long parent_ip), | |
17 | ||
18 | TP_ARGS(ip, parent_ip), | |
19 | ||
20 | TP_STRUCT__entry( | |
21 | __field(u32, caller_offs) | |
22 | __field(u32, parent_offs) | |
23 | ), | |
24 | ||
25 | TP_fast_assign( | |
26 | __entry->caller_offs = (u32)(ip - (unsigned long)_stext); | |
27 | __entry->parent_offs = (u32)(parent_ip - (unsigned long)_stext); | |
28 | ), | |
29 | ||
30 | TP_printk("caller=%pF parent=%pF", | |
31 | (void *)((unsigned long)(_stext) + __entry->caller_offs), | |
32 | (void *)((unsigned long)(_stext) + __entry->parent_offs)) | |
33 | ); | |
34 | ||
35 | #ifndef CONFIG_PROVE_LOCKING | |
36 | DEFINE_EVENT(preemptirq_template, irq_disable, | |
37 | TP_PROTO(unsigned long ip, unsigned long parent_ip), | |
38 | TP_ARGS(ip, parent_ip)); | |
39 | ||
40 | DEFINE_EVENT(preemptirq_template, irq_enable, | |
41 | TP_PROTO(unsigned long ip, unsigned long parent_ip), | |
42 | TP_ARGS(ip, parent_ip)); | |
43 | #endif | |
44 | ||
45 | #ifdef CONFIG_DEBUG_PREEMPT | |
46 | DEFINE_EVENT(preemptirq_template, preempt_disable, | |
47 | TP_PROTO(unsigned long ip, unsigned long parent_ip), | |
48 | TP_ARGS(ip, parent_ip)); | |
49 | ||
50 | DEFINE_EVENT(preemptirq_template, preempt_enable, | |
51 | TP_PROTO(unsigned long ip, unsigned long parent_ip), | |
52 | TP_ARGS(ip, parent_ip)); | |
53 | #endif | |
54 | ||
55 | #endif /* _TRACE_PREEMPTIRQ_H */ | |
56 | ||
57 | #include <trace/define_trace.h> | |
58 | ||
250d0c77 | 59 | #endif /* !CONFIG_PREEMPTIRQ_EVENTS */ |
d5915816 | 60 | |
250d0c77 | 61 | #if !defined(CONFIG_PREEMPTIRQ_EVENTS) || defined(CONFIG_PROVE_LOCKING) |
d5915816 JF |
62 | #define trace_irq_enable(...) |
63 | #define trace_irq_disable(...) | |
d5915816 JF |
64 | #define trace_irq_enable_rcuidle(...) |
65 | #define trace_irq_disable_rcuidle(...) | |
250d0c77 AB |
66 | #endif |
67 | ||
68 | #if !defined(CONFIG_PREEMPTIRQ_EVENTS) || !defined(CONFIG_DEBUG_PREEMPT) | |
69 | #define trace_preempt_enable(...) | |
70 | #define trace_preempt_disable(...) | |
d5915816 JF |
71 | #define trace_preempt_enable_rcuidle(...) |
72 | #define trace_preempt_disable_rcuidle(...) | |
d5915816 | 73 | #endif |