cregit-Linux how code gets into the kernel

Release 4.11 arch/x86/include/asm/trace/irq_vectors.h


#undef TRACE_SYSTEM

#define TRACE_SYSTEM irq_vectors

#if !defined(_TRACE_IRQ_VECTORS_H) || defined(TRACE_HEADER_MULTI_READ)

#define _TRACE_IRQ_VECTORS_H

#include <linux/tracepoint.h>

extern int trace_irq_vector_regfunc(void);
extern void trace_irq_vector_unregfunc(void);

DECLARE_EVENT_CLASS(x86_irq_vector,

	TP_PROTO(int vector),

	TP_ARGS(vector),

	TP_STRUCT__entry(
                __field(                int,    vector  )
        ),

	TP_fast_assign(
                __entry->vector = vector;
        ),

	TP_printk("vector=%d", __entry->vector) );


#define DEFINE_IRQ_VECTOR_EVENT(name)		\
DEFINE_EVENT_FN(x86_irq_vector, name##_entry,   \
        TP_PROTO(int vector),                   \
        TP_ARGS(vector),                        \
        trace_irq_vector_regfunc,               \
        trace_irq_vector_unregfunc);            \
DEFINE_EVENT_FN(x86_irq_vector, name##_exit,    \
        TP_PROTO(int vector),                   \
        TP_ARGS(vector),                        \
        trace_irq_vector_regfunc,               \
        trace_irq_vector_unregfunc);


/*
 * local_timer - called when entering/exiting a local timer interrupt
 * vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(local_timer);

/*
 * reschedule - called when entering/exiting a reschedule vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(reschedule);

/*
 * spurious_apic - called when entering/exiting a spurious apic vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(spurious_apic);

/*
 * error_apic - called when entering/exiting an error apic vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(error_apic);

/*
 * x86_platform_ipi - called when entering/exiting a x86 platform ipi interrupt
 * vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(x86_platform_ipi);

/*
 * irq_work - called when entering/exiting a irq work interrupt
 * vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(irq_work);

/*
 * We must dis-allow sampling irq_work_exit() because perf event sampling
 * itself can cause irq_work, which would lead to an infinite loop;
 *
 *  1) irq_work_exit happens
 *  2) generates perf sample
 *  3) generates irq_work
 *  4) goto 1
 */
TRACE_EVENT_PERF_PERM(irq_work_exit, is_sampling_event(p_event) ? -EPERM : 0);

/*
 * call_function - called when entering/exiting a call function interrupt
 * vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(call_function);

/*
 * call_function_single - called when entering/exiting a call function
 * single interrupt vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(call_function_single);

/*
 * threshold_apic - called when entering/exiting a threshold apic interrupt
 * vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(threshold_apic);

/*
 * deferred_error_apic - called when entering/exiting a deferred apic interrupt
 * vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(deferred_error_apic);

/*
 * thermal_apic - called when entering/exiting a thermal apic interrupt
 * vector handler
 */

DEFINE_IRQ_VECTOR_EVENT(thermal_apic);


#undef TRACE_INCLUDE_PATH

#define TRACE_INCLUDE_PATH .

#define TRACE_INCLUDE_FILE irq_vectors
#endif /*  _TRACE_IRQ_VECTORS_H */

/* This part must be outside protection */
#include <trace/define_trace.h>

Overall Contributors

PersonTokensPropCommitsCommitProp
Seiji Aguchi14185.98%125.00%
Peter Zijlstra169.76%125.00%
Aravind Gopalakrishnan63.66%125.00%
Steven Rostedt10.61%125.00%
Total164100.00%4100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.