1 #if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ) 2 #define _TRACE_WORKQUEUE_H 3 4 #include <linux/workqueue.h> 5 #include <linux/sched.h> 6 #include <linux/tracepoint.h> 7 8 #undef TRACE_SYSTEM 9 #define TRACE_SYSTEM workqueue 10 11 TRACE_EVENT(workqueue_insertion, 12 13 TP_PROTO(struct task_struct *wq_thread, struct work_struct *work), 14 15 TP_ARGS(wq_thread, work), 16 17 TP_STRUCT__entry( 18 __array(char, thread_comm, TASK_COMM_LEN) 19 __field(pid_t, thread_pid) 20 __field(work_func_t, func) 21 ), 22 23 TP_fast_assign( 24 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN); 25 __entry->thread_pid = wq_thread->pid; 26 __entry->func = work->func; 27 ), 28 29 TP_printk("thread=%s:%d func=%pF", __entry->thread_comm, 30 __entry->thread_pid, __entry->func) 31 ); 32 33 TRACE_EVENT(workqueue_execution, 34 35 TP_PROTO(struct task_struct *wq_thread, struct work_struct *work), 36 37 TP_ARGS(wq_thread, work), 38 39 TP_STRUCT__entry( 40 __array(char, thread_comm, TASK_COMM_LEN) 41 __field(pid_t, thread_pid) 42 __field(work_func_t, func) 43 ), 44 45 TP_fast_assign( 46 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN); 47 __entry->thread_pid = wq_thread->pid; 48 __entry->func = work->func; 49 ), 50 51 TP_printk("thread=%s:%d func=%pF", __entry->thread_comm, 52 __entry->thread_pid, __entry->func) 53 ); 54 55 /* Trace the creation of one workqueue thread on a cpu */ 56 TRACE_EVENT(workqueue_creation, 57 58 TP_PROTO(struct task_struct *wq_thread, int cpu), 59 60 TP_ARGS(wq_thread, cpu), 61 62 TP_STRUCT__entry( 63 __array(char, thread_comm, TASK_COMM_LEN) 64 __field(pid_t, thread_pid) 65 __field(int, cpu) 66 ), 67 68 TP_fast_assign( 69 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN); 70 __entry->thread_pid = wq_thread->pid; 71 __entry->cpu = cpu; 72 ), 73 74 TP_printk("thread=%s:%d cpu=%d", __entry->thread_comm, 75 __entry->thread_pid, __entry->cpu) 76 ); 77 78 TRACE_EVENT(workqueue_destruction, 79 80 TP_PROTO(struct task_struct *wq_thread), 81 82 TP_ARGS(wq_thread), 83 84 TP_STRUCT__entry( 85 __array(char, thread_comm, TASK_COMM_LEN) 86 __field(pid_t, thread_pid) 87 ), 88 89 TP_fast_assign( 90 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN); 91 __entry->thread_pid = wq_thread->pid; 92 ), 93 94 TP_printk("thread=%s:%d", __entry->thread_comm, __entry->thread_pid) 95 ); 96 97 #endif /* _TRACE_WORKQUEUE_H */ 98 99 /* This part must be outside protection */ 100 #include <trace/define_trace.h> 101