xref: /openbmc/linux/include/trace/events/workqueue.h (revision a09d2831)
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