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