preemptirq.h (2163B)
1#ifdef CONFIG_PREEMPTIRQ_TRACEPOINTS 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 14DECLARE_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(s32, caller_offs) 22 __field(s32, parent_offs) 23 ), 24 25 TP_fast_assign( 26 __entry->caller_offs = (s32)(ip - (unsigned long)_stext); 27 __entry->parent_offs = (s32)(parent_ip - (unsigned long)_stext); 28 ), 29 30 TP_printk("caller=%pS parent=%pS", 31 (void *)((unsigned long)(_stext) + __entry->caller_offs), 32 (void *)((unsigned long)(_stext) + __entry->parent_offs)) 33); 34 35#ifdef CONFIG_TRACE_IRQFLAGS 36DEFINE_EVENT(preemptirq_template, irq_disable, 37 TP_PROTO(unsigned long ip, unsigned long parent_ip), 38 TP_ARGS(ip, parent_ip)); 39 40DEFINE_EVENT(preemptirq_template, irq_enable, 41 TP_PROTO(unsigned long ip, unsigned long parent_ip), 42 TP_ARGS(ip, parent_ip)); 43#else 44#define trace_irq_enable(...) 45#define trace_irq_disable(...) 46#define trace_irq_enable_rcuidle(...) 47#define trace_irq_disable_rcuidle(...) 48#endif 49 50#ifdef CONFIG_TRACE_PREEMPT_TOGGLE 51DEFINE_EVENT(preemptirq_template, preempt_disable, 52 TP_PROTO(unsigned long ip, unsigned long parent_ip), 53 TP_ARGS(ip, parent_ip)); 54 55DEFINE_EVENT(preemptirq_template, preempt_enable, 56 TP_PROTO(unsigned long ip, unsigned long parent_ip), 57 TP_ARGS(ip, parent_ip)); 58#else 59#define trace_preempt_enable(...) 60#define trace_preempt_disable(...) 61#define trace_preempt_enable_rcuidle(...) 62#define trace_preempt_disable_rcuidle(...) 63#endif 64 65#endif /* _TRACE_PREEMPTIRQ_H */ 66 67#include <trace/define_trace.h> 68 69#else /* !CONFIG_PREEMPTIRQ_TRACEPOINTS */ 70#define trace_irq_enable(...) 71#define trace_irq_disable(...) 72#define trace_irq_enable_rcuidle(...) 73#define trace_irq_disable_rcuidle(...) 74#define trace_preempt_enable(...) 75#define trace_preempt_disable(...) 76#define trace_preempt_enable_rcuidle(...) 77#define trace_preempt_disable_rcuidle(...) 78#endif