osnoise.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM osnoise
  4. #if !defined(_OSNOISE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _OSNOISE_TRACE_H
  6. #include <linux/tracepoint.h>
  7. TRACE_EVENT(thread_noise,
  8. TP_PROTO(struct task_struct *t, u64 start, u64 duration),
  9. TP_ARGS(t, start, duration),
  10. TP_STRUCT__entry(
  11. __array( char, comm, TASK_COMM_LEN)
  12. __field( u64, start )
  13. __field( u64, duration)
  14. __field( pid_t, pid )
  15. ),
  16. TP_fast_assign(
  17. memcpy(__entry->comm, t->comm, TASK_COMM_LEN);
  18. __entry->pid = t->pid;
  19. __entry->start = start;
  20. __entry->duration = duration;
  21. ),
  22. TP_printk("%8s:%d start %llu.%09u duration %llu ns",
  23. __entry->comm,
  24. __entry->pid,
  25. __print_ns_to_secs(__entry->start),
  26. __print_ns_without_secs(__entry->start),
  27. __entry->duration)
  28. );
  29. TRACE_EVENT(softirq_noise,
  30. TP_PROTO(int vector, u64 start, u64 duration),
  31. TP_ARGS(vector, start, duration),
  32. TP_STRUCT__entry(
  33. __field( u64, start )
  34. __field( u64, duration)
  35. __field( int, vector )
  36. ),
  37. TP_fast_assign(
  38. __entry->vector = vector;
  39. __entry->start = start;
  40. __entry->duration = duration;
  41. ),
  42. TP_printk("%8s:%d start %llu.%09u duration %llu ns",
  43. show_softirq_name(__entry->vector),
  44. __entry->vector,
  45. __print_ns_to_secs(__entry->start),
  46. __print_ns_without_secs(__entry->start),
  47. __entry->duration)
  48. );
  49. TRACE_EVENT(irq_noise,
  50. TP_PROTO(int vector, const char *desc, u64 start, u64 duration),
  51. TP_ARGS(vector, desc, start, duration),
  52. TP_STRUCT__entry(
  53. __field( u64, start )
  54. __field( u64, duration)
  55. __string( desc, desc )
  56. __field( int, vector )
  57. ),
  58. TP_fast_assign(
  59. __assign_str(desc, desc);
  60. __entry->vector = vector;
  61. __entry->start = start;
  62. __entry->duration = duration;
  63. ),
  64. TP_printk("%s:%d start %llu.%09u duration %llu ns",
  65. __get_str(desc),
  66. __entry->vector,
  67. __print_ns_to_secs(__entry->start),
  68. __print_ns_without_secs(__entry->start),
  69. __entry->duration)
  70. );
  71. TRACE_EVENT(nmi_noise,
  72. TP_PROTO(u64 start, u64 duration),
  73. TP_ARGS(start, duration),
  74. TP_STRUCT__entry(
  75. __field( u64, start )
  76. __field( u64, duration)
  77. ),
  78. TP_fast_assign(
  79. __entry->start = start;
  80. __entry->duration = duration;
  81. ),
  82. TP_printk("start %llu.%09u duration %llu ns",
  83. __print_ns_to_secs(__entry->start),
  84. __print_ns_without_secs(__entry->start),
  85. __entry->duration)
  86. );
  87. TRACE_EVENT(sample_threshold,
  88. TP_PROTO(u64 start, u64 duration, u64 interference),
  89. TP_ARGS(start, duration, interference),
  90. TP_STRUCT__entry(
  91. __field( u64, start )
  92. __field( u64, duration)
  93. __field( u64, interference)
  94. ),
  95. TP_fast_assign(
  96. __entry->start = start;
  97. __entry->duration = duration;
  98. __entry->interference = interference;
  99. ),
  100. TP_printk("start %llu.%09u duration %llu ns interference %llu",
  101. __print_ns_to_secs(__entry->start),
  102. __print_ns_without_secs(__entry->start),
  103. __entry->duration,
  104. __entry->interference)
  105. );
  106. #endif /* _TRACE_OSNOISE_H */
  107. /* This part must be outside protection */
  108. #include <trace/define_trace.h>