]> Git Repo - linux.git/blob - include/trace/events/workqueue.h
Merge patch series "riscv: Extension parsing fixes"
[linux.git] / include / trace / events / workqueue.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM workqueue
4
5 #if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_WORKQUEUE_H
7
8 #include <linux/tracepoint.h>
9 #include <linux/workqueue.h>
10
11 struct pool_workqueue;
12
13 /**
14  * workqueue_queue_work - called when a work gets queued
15  * @req_cpu:    the requested cpu
16  * @pwq:        pointer to struct pool_workqueue
17  * @work:       pointer to struct work_struct
18  *
19  * This event occurs when a work is queued immediately or once a
20  * delayed work is actually queued on a workqueue (ie: once the delay
21  * has been reached).
22  */
23 TRACE_EVENT(workqueue_queue_work,
24
25         TP_PROTO(int req_cpu, struct pool_workqueue *pwq,
26                  struct work_struct *work),
27
28         TP_ARGS(req_cpu, pwq, work),
29
30         TP_STRUCT__entry(
31                 __field( void *,        work    )
32                 __field( void *,        function)
33                 __string( workqueue,    pwq->wq->name)
34                 __field( int,   req_cpu )
35                 __field( int,   cpu     )
36         ),
37
38         TP_fast_assign(
39                 __entry->work           = work;
40                 __entry->function       = work->func;
41                 __assign_str(workqueue, pwq->wq->name);
42                 __entry->req_cpu        = req_cpu;
43                 __entry->cpu            = pwq->pool->cpu;
44         ),
45
46         TP_printk("work struct=%p function=%ps workqueue=%s req_cpu=%d cpu=%d",
47                   __entry->work, __entry->function, __get_str(workqueue),
48                   __entry->req_cpu, __entry->cpu)
49 );
50
51 /**
52  * workqueue_activate_work - called when a work gets activated
53  * @work:       pointer to struct work_struct
54  *
55  * This event occurs when a queued work is put on the active queue,
56  * which happens immediately after queueing unless @max_active limit
57  * is reached.
58  */
59 TRACE_EVENT(workqueue_activate_work,
60
61         TP_PROTO(struct work_struct *work),
62
63         TP_ARGS(work),
64
65         TP_STRUCT__entry(
66                 __field( void *,        work    )
67                 __field( void *,        function)
68         ),
69
70         TP_fast_assign(
71                 __entry->work           = work;
72                 __entry->function       = work->func;
73         ),
74
75         TP_printk("work struct %p function=%ps ", __entry->work, __entry->function)
76 );
77
78 /**
79  * workqueue_execute_start - called immediately before the workqueue callback
80  * @work:       pointer to struct work_struct
81  *
82  * Allows to track workqueue execution.
83  */
84 TRACE_EVENT(workqueue_execute_start,
85
86         TP_PROTO(struct work_struct *work),
87
88         TP_ARGS(work),
89
90         TP_STRUCT__entry(
91                 __field( void *,        work    )
92                 __field( void *,        function)
93         ),
94
95         TP_fast_assign(
96                 __entry->work           = work;
97                 __entry->function       = work->func;
98         ),
99
100         TP_printk("work struct %p: function %ps", __entry->work, __entry->function)
101 );
102
103 /**
104  * workqueue_execute_end - called immediately after the workqueue callback
105  * @work:       pointer to struct work_struct
106  * @function:   pointer to worker function
107  *
108  * Allows to track workqueue execution.
109  */
110 TRACE_EVENT(workqueue_execute_end,
111
112         TP_PROTO(struct work_struct *work, work_func_t function),
113
114         TP_ARGS(work, function),
115
116         TP_STRUCT__entry(
117                 __field( void *,        work    )
118                 __field( void *,        function)
119         ),
120
121         TP_fast_assign(
122                 __entry->work           = work;
123                 __entry->function       = function;
124         ),
125
126         TP_printk("work struct %p: function %ps", __entry->work, __entry->function)
127 );
128
129 #endif /*  _TRACE_WORKQUEUE_H */
130
131 /* This part must be outside protection */
132 #include <trace/define_trace.h>
This page took 0.039458 seconds and 4 git commands to generate.