Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/include/trace/events/workqueue.h
10818 views
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/tracepoint.h>
8
#include <linux/workqueue.h>
9
10
DECLARE_EVENT_CLASS(workqueue_work,
11
12
TP_PROTO(struct work_struct *work),
13
14
TP_ARGS(work),
15
16
TP_STRUCT__entry(
17
__field( void *, work )
18
),
19
20
TP_fast_assign(
21
__entry->work = work;
22
),
23
24
TP_printk("work struct %p", __entry->work)
25
);
26
27
/**
28
* workqueue_queue_work - called when a work gets queued
29
* @req_cpu: the requested cpu
30
* @cwq: pointer to struct cpu_workqueue_struct
31
* @work: pointer to struct work_struct
32
*
33
* This event occurs when a work is queued immediately or once a
34
* delayed work is actually queued on a workqueue (ie: once the delay
35
* has been reached).
36
*/
37
TRACE_EVENT(workqueue_queue_work,
38
39
TP_PROTO(unsigned int req_cpu, struct cpu_workqueue_struct *cwq,
40
struct work_struct *work),
41
42
TP_ARGS(req_cpu, cwq, work),
43
44
TP_STRUCT__entry(
45
__field( void *, work )
46
__field( void *, function)
47
__field( void *, workqueue)
48
__field( unsigned int, req_cpu )
49
__field( unsigned int, cpu )
50
),
51
52
TP_fast_assign(
53
__entry->work = work;
54
__entry->function = work->func;
55
__entry->workqueue = cwq->wq;
56
__entry->req_cpu = req_cpu;
57
__entry->cpu = cwq->gcwq->cpu;
58
),
59
60
TP_printk("work struct=%p function=%pf workqueue=%p req_cpu=%u cpu=%u",
61
__entry->work, __entry->function, __entry->workqueue,
62
__entry->req_cpu, __entry->cpu)
63
);
64
65
/**
66
* workqueue_activate_work - called when a work gets activated
67
* @work: pointer to struct work_struct
68
*
69
* This event occurs when a queued work is put on the active queue,
70
* which happens immediately after queueing unless @max_active limit
71
* is reached.
72
*/
73
DEFINE_EVENT(workqueue_work, workqueue_activate_work,
74
75
TP_PROTO(struct work_struct *work),
76
77
TP_ARGS(work)
78
);
79
80
/**
81
* workqueue_execute_start - called immediately before the workqueue callback
82
* @work: pointer to struct work_struct
83
*
84
* Allows to track workqueue execution.
85
*/
86
TRACE_EVENT(workqueue_execute_start,
87
88
TP_PROTO(struct work_struct *work),
89
90
TP_ARGS(work),
91
92
TP_STRUCT__entry(
93
__field( void *, work )
94
__field( void *, function)
95
),
96
97
TP_fast_assign(
98
__entry->work = work;
99
__entry->function = work->func;
100
),
101
102
TP_printk("work struct %p: function %pf", __entry->work, __entry->function)
103
);
104
105
/**
106
* workqueue_execute_end - called immediately before the workqueue callback
107
* @work: pointer to struct work_struct
108
*
109
* Allows to track workqueue execution.
110
*/
111
DEFINE_EVENT(workqueue_work, workqueue_execute_end,
112
113
TP_PROTO(struct work_struct *work),
114
115
TP_ARGS(work)
116
);
117
118
#endif /* _TRACE_WORKQUEUE_H */
119
120
/* This part must be outside protection */
121
#include <trace/define_trace.h>
122
123