don't make the syscall checking produce errors from warnings
[linux-2.6-microblaze.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(unsigned 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( unsigned int,  req_cpu )
35                 __field( unsigned 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=%u cpu=%u",
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         ),
68
69         TP_fast_assign(
70                 __entry->work           = work;
71         ),
72
73         TP_printk("work struct %p", __entry->work)
74 );
75
76 /**
77  * workqueue_execute_start - called immediately before the workqueue callback
78  * @work:       pointer to struct work_struct
79  *
80  * Allows to track workqueue execution.
81  */
82 TRACE_EVENT(workqueue_execute_start,
83
84         TP_PROTO(struct work_struct *work),
85
86         TP_ARGS(work),
87
88         TP_STRUCT__entry(
89                 __field( void *,        work    )
90                 __field( void *,        function)
91         ),
92
93         TP_fast_assign(
94                 __entry->work           = work;
95                 __entry->function       = work->func;
96         ),
97
98         TP_printk("work struct %p: function %ps", __entry->work, __entry->function)
99 );
100
101 /**
102  * workqueue_execute_end - called immediately after the workqueue callback
103  * @work:       pointer to struct work_struct
104  * @function:   pointer to worker function
105  *
106  * Allows to track workqueue execution.
107  */
108 TRACE_EVENT(workqueue_execute_end,
109
110         TP_PROTO(struct work_struct *work, work_func_t function),
111
112         TP_ARGS(work, function),
113
114         TP_STRUCT__entry(
115                 __field( void *,        work    )
116                 __field( void *,        function)
117         ),
118
119         TP_fast_assign(
120                 __entry->work           = work;
121                 __entry->function       = function;
122         ),
123
124         TP_printk("work struct %p: function %ps", __entry->work, __entry->function)
125 );
126
127 #endif /*  _TRACE_WORKQUEUE_H */
128
129 /* This part must be outside protection */
130 #include <trace/define_trace.h>