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