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