Migrate tracepoint instrumentation to TP_FIELDS
[lttng-modules.git] / instrumentation / events / lttng-module / workqueue.h
... / ...
CommitLineData
1#undef TRACE_SYSTEM
2#define TRACE_SYSTEM workqueue
3
4#if !defined(LTTNG_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)
5#define LTTNG_TRACE_WORKQUEUE_H
6
7#include "../../../probes/lttng-tracepoint-event.h"
8#include <linux/workqueue.h>
9#include <linux/version.h>
10
11#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36))
12
13#ifndef _TRACE_WORKQUEUE_DEF_
14#define _TRACE_WORKQUEUE_DEF_
15
16struct worker;
17struct global_cwq;
18
19#endif
20
21LTTNG_TRACEPOINT_EVENT_CLASS(workqueue_work,
22
23 TP_PROTO(struct work_struct *work),
24
25 TP_ARGS(work),
26
27 TP_FIELDS(
28 ctf_integer(void *, work, work)
29 )
30)
31
32#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
33/**
34 * workqueue_queue_work - called when a work gets queued
35 * @req_cpu: the requested cpu
36 * @cwq: pointer to struct cpu_workqueue_struct
37 * @work: pointer to struct work_struct
38 *
39 * This event occurs when a work is queued immediately or once a
40 * delayed work is actually queued on a workqueue (ie: once the delay
41 * has been reached).
42 */
43LTTNG_TRACEPOINT_EVENT(workqueue_queue_work,
44
45#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
46 TP_PROTO(unsigned int req_cpu, struct pool_workqueue *pwq,
47 struct work_struct *work),
48
49 TP_ARGS(req_cpu, pwq, work),
50#else
51 TP_PROTO(unsigned int req_cpu, struct cpu_workqueue_struct *cwq,
52 struct work_struct *work),
53
54 TP_ARGS(req_cpu, cwq, work),
55#endif
56
57 TP_FIELDS(
58 ctf_integer(void *, work, work)
59 ctf_integer(void *, function, work->func)
60 ctf_integer(unsigned int, req_cpu, req_cpu)
61 )
62)
63
64/**
65 * workqueue_activate_work - called when a work gets activated
66 * @work: pointer to struct work_struct
67 *
68 * This event occurs when a queued work is put on the active queue,
69 * which happens immediately after queueing unless @max_active limit
70 * is reached.
71 */
72LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue_work, workqueue_activate_work,
73
74 TP_PROTO(struct work_struct *work),
75
76 TP_ARGS(work)
77)
78#endif
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 */
86LTTNG_TRACEPOINT_EVENT(workqueue_execute_start,
87
88 TP_PROTO(struct work_struct *work),
89
90 TP_ARGS(work),
91
92 TP_FIELDS(
93 ctf_integer(void *, work, work)
94 ctf_integer(void *, function, work->func)
95 )
96)
97
98/**
99 * workqueue_execute_end - called immediately after the workqueue callback
100 * @work: pointer to struct work_struct
101 *
102 * Allows to track workqueue execution.
103 */
104LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue_work, workqueue_execute_end,
105
106 TP_PROTO(struct work_struct *work),
107
108 TP_ARGS(work)
109)
110
111#else
112
113LTTNG_TRACEPOINT_EVENT_CLASS(workqueue,
114
115 TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
116
117 TP_ARGS(wq_thread, work),
118
119 TP_FIELDS(
120 ctf_array(char, thread_comm, wq_thread->comm, TASK_COMM_LEN)
121 ctf_integer(pid_t, thread_pid, wq_thread->pid)
122 ctf_integer(work_func_t, func, work->func)
123 )
124)
125
126LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue, workqueue_insertion,
127
128 TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
129
130 TP_ARGS(wq_thread, work)
131)
132
133LTTNG_TRACEPOINT_EVENT_INSTANCE(workqueue, workqueue_execution,
134
135 TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
136
137 TP_ARGS(wq_thread, work)
138)
139
140/* Trace the creation of one workqueue thread on a cpu */
141LTTNG_TRACEPOINT_EVENT(workqueue_creation,
142
143 TP_PROTO(struct task_struct *wq_thread, int cpu),
144
145 TP_ARGS(wq_thread, cpu),
146
147 TP_FIELDS(
148 ctf_array(char, thread_comm, wq_thread->comm, TASK_COMM_LEN)
149 ctf_integer(pid_t, thread_pid, wq_thread->pid)
150 ctf_integer(int, cpu, cpu)
151 )
152)
153
154LTTNG_TRACEPOINT_EVENT(workqueue_destruction,
155
156 TP_PROTO(struct task_struct *wq_thread),
157
158 TP_ARGS(wq_thread),
159
160 TP_FIELDS(
161 ctf_array(char, thread_comm, wq_thread->comm, TASK_COMM_LEN)
162 ctf_integer(pid_t, thread_pid, wq_thread->pid)
163 )
164)
165
166#endif
167
168#endif /* LTTNG_TRACE_WORKQUEUE_H */
169
170/* This part must be outside protection */
171#include "../../../probes/define_trace.h"
This page took 0.02275 seconds and 4 git commands to generate.