Back to home page

OSCL-LXR

 
 

    


0001 #ifdef CONFIG_PREEMPTIRQ_TRACEPOINTS
0002 
0003 #undef TRACE_SYSTEM
0004 #define TRACE_SYSTEM preemptirq
0005 
0006 #if !defined(_TRACE_PREEMPTIRQ_H) || defined(TRACE_HEADER_MULTI_READ)
0007 #define _TRACE_PREEMPTIRQ_H
0008 
0009 #include <linux/ktime.h>
0010 #include <linux/tracepoint.h>
0011 #include <linux/string.h>
0012 #include <asm/sections.h>
0013 
0014 DECLARE_EVENT_CLASS(preemptirq_template,
0015 
0016     TP_PROTO(unsigned long ip, unsigned long parent_ip),
0017 
0018     TP_ARGS(ip, parent_ip),
0019 
0020     TP_STRUCT__entry(
0021         __field(s32, caller_offs)
0022         __field(s32, parent_offs)
0023     ),
0024 
0025     TP_fast_assign(
0026         __entry->caller_offs = (s32)(ip - (unsigned long)_stext);
0027         __entry->parent_offs = (s32)(parent_ip - (unsigned long)_stext);
0028     ),
0029 
0030     TP_printk("caller=%pS parent=%pS",
0031           (void *)((unsigned long)(_stext) + __entry->caller_offs),
0032           (void *)((unsigned long)(_stext) + __entry->parent_offs))
0033 );
0034 
0035 #ifdef CONFIG_TRACE_IRQFLAGS
0036 DEFINE_EVENT(preemptirq_template, irq_disable,
0037          TP_PROTO(unsigned long ip, unsigned long parent_ip),
0038          TP_ARGS(ip, parent_ip));
0039 
0040 DEFINE_EVENT(preemptirq_template, irq_enable,
0041          TP_PROTO(unsigned long ip, unsigned long parent_ip),
0042          TP_ARGS(ip, parent_ip));
0043 #else
0044 #define trace_irq_enable(...)
0045 #define trace_irq_disable(...)
0046 #define trace_irq_enable_rcuidle(...)
0047 #define trace_irq_disable_rcuidle(...)
0048 #endif
0049 
0050 #ifdef CONFIG_TRACE_PREEMPT_TOGGLE
0051 DEFINE_EVENT(preemptirq_template, preempt_disable,
0052          TP_PROTO(unsigned long ip, unsigned long parent_ip),
0053          TP_ARGS(ip, parent_ip));
0054 
0055 DEFINE_EVENT(preemptirq_template, preempt_enable,
0056          TP_PROTO(unsigned long ip, unsigned long parent_ip),
0057          TP_ARGS(ip, parent_ip));
0058 #else
0059 #define trace_preempt_enable(...)
0060 #define trace_preempt_disable(...)
0061 #define trace_preempt_enable_rcuidle(...)
0062 #define trace_preempt_disable_rcuidle(...)
0063 #endif
0064 
0065 #endif /* _TRACE_PREEMPTIRQ_H */
0066 
0067 #include <trace/define_trace.h>
0068 
0069 #else /* !CONFIG_PREEMPTIRQ_TRACEPOINTS */
0070 #define trace_irq_enable(...)
0071 #define trace_irq_disable(...)
0072 #define trace_irq_enable_rcuidle(...)
0073 #define trace_irq_disable_rcuidle(...)
0074 #define trace_preempt_enable(...)
0075 #define trace_preempt_disable(...)
0076 #define trace_preempt_enable_rcuidle(...)
0077 #define trace_preempt_disable_rcuidle(...)
0078 #endif