irq_vectors.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM irq_vectors
  3. #if !defined(_TRACE_IRQ_VECTORS_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_IRQ_VECTORS_H
  5. #include <linux/tracepoint.h>
  6. extern void trace_irq_vector_regfunc(void);
  7. extern void trace_irq_vector_unregfunc(void);
  8. DECLARE_EVENT_CLASS(x86_irq_vector,
  9. TP_PROTO(int vector),
  10. TP_ARGS(vector),
  11. TP_STRUCT__entry(
  12. __field( int, vector )
  13. ),
  14. TP_fast_assign(
  15. __entry->vector = vector;
  16. ),
  17. TP_printk("vector=%d", __entry->vector) );
  18. #define DEFINE_IRQ_VECTOR_EVENT(name) \
  19. DEFINE_EVENT_FN(x86_irq_vector, name##_entry, \
  20. TP_PROTO(int vector), \
  21. TP_ARGS(vector), \
  22. trace_irq_vector_regfunc, \
  23. trace_irq_vector_unregfunc); \
  24. DEFINE_EVENT_FN(x86_irq_vector, name##_exit, \
  25. TP_PROTO(int vector), \
  26. TP_ARGS(vector), \
  27. trace_irq_vector_regfunc, \
  28. trace_irq_vector_unregfunc);
  29. /*
  30. * local_timer - called when entering/exiting a local timer interrupt
  31. * vector handler
  32. */
  33. DEFINE_IRQ_VECTOR_EVENT(local_timer);
  34. /*
  35. * reschedule - called when entering/exiting a reschedule vector handler
  36. */
  37. DEFINE_IRQ_VECTOR_EVENT(reschedule);
  38. /*
  39. * spurious_apic - called when entering/exiting a spurious apic vector handler
  40. */
  41. DEFINE_IRQ_VECTOR_EVENT(spurious_apic);
  42. /*
  43. * error_apic - called when entering/exiting an error apic vector handler
  44. */
  45. DEFINE_IRQ_VECTOR_EVENT(error_apic);
  46. /*
  47. * x86_platform_ipi - called when entering/exiting a x86 platform ipi interrupt
  48. * vector handler
  49. */
  50. DEFINE_IRQ_VECTOR_EVENT(x86_platform_ipi);
  51. /*
  52. * irq_work - called when entering/exiting a irq work interrupt
  53. * vector handler
  54. */
  55. DEFINE_IRQ_VECTOR_EVENT(irq_work);
  56. /*
  57. * call_function - called when entering/exiting a call function interrupt
  58. * vector handler
  59. */
  60. DEFINE_IRQ_VECTOR_EVENT(call_function);
  61. /*
  62. * call_function_single - called when entering/exiting a call function
  63. * single interrupt vector handler
  64. */
  65. DEFINE_IRQ_VECTOR_EVENT(call_function_single);
  66. /*
  67. * threshold_apic - called when entering/exiting a threshold apic interrupt
  68. * vector handler
  69. */
  70. DEFINE_IRQ_VECTOR_EVENT(threshold_apic);
  71. /*
  72. * thermal_apic - called when entering/exiting a thermal apic interrupt
  73. * vector handler
  74. */
  75. DEFINE_IRQ_VECTOR_EVENT(thermal_apic);
  76. #undef TRACE_INCLUDE_PATH
  77. #define TRACE_INCLUDE_PATH .
  78. #define TRACE_INCLUDE_FILE irq_vectors
  79. #endif /* _TRACE_IRQ_VECTORS_H */
  80. /* This part must be outside protection */
  81. #include <trace/define_trace.h>