1 #undef TRACE_SYSTEM 2 #define TRACE_SYSTEM workqueue 3 4 #if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ) 5 #define _TRACE_WORKQUEUE_H 6 7 #include <linux/workqueue.h> 8 #include <linux/sched.h> 9 #include <linux/tracepoint.h> 10 11 DECLARE_EVENT_CLASS(workqueue, 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 DEFINE_EVENT(workqueue, workqueue_insertion, 34 35 TP_PROTO(struct task_struct *wq_thread, struct work_struct *work), 36 37 TP_ARGS(wq_thread, work) 38 ); 39 40 DEFINE_EVENT(workqueue, workqueue_execution, 41 42 TP_PROTO(struct task_struct *wq_thread, struct work_struct *work), 43 44 TP_ARGS(wq_thread, work) 45 ); 46 47 /* Trace the creation of one workqueue thread on a cpu */ 48 TRACE_EVENT(workqueue_creation, 49 50 TP_PROTO(struct task_struct *wq_thread, int cpu), 51 52 TP_ARGS(wq_thread, cpu), 53 54 TP_STRUCT__entry( 55 __array(char, thread_comm, TASK_COMM_LEN) 56 __field(pid_t, thread_pid) 57 __field(int, cpu) 58 ), 59 60 TP_fast_assign( 61 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN); 62 __entry->thread_pid = wq_thread->pid; 63 __entry->cpu = cpu; 64 ), 65 66 TP_printk("thread=%s:%d cpu=%d", __entry->thread_comm, 67 __entry->thread_pid, __entry->cpu) 68 ); 69 70 TRACE_EVENT(workqueue_destruction, 71 72 TP_PROTO(struct task_struct *wq_thread), 73 74 TP_ARGS(wq_thread), 75 76 TP_STRUCT__entry( 77 __array(char, thread_comm, TASK_COMM_LEN) 78 __field(pid_t, thread_pid) 79 ), 80 81 TP_fast_assign( 82 memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN); 83 __entry->thread_pid = wq_thread->pid; 84 ), 85 86 TP_printk("thread=%s:%d", __entry->thread_comm, __entry->thread_pid) 87 ); 88 89 #endif /* _TRACE_WORKQUEUE_H */ 90 91 /* This part must be outside protection */ 92 #include <trace/define_trace.h> 93