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