cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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