Fix: scsi: sd: Atomic write support added in 6.11-rc1
[lttng-modules.git] / include / instrumentation / events / rpc.h
CommitLineData
61baff6e
MJ
1// SPDX-FileCopyrightText: 2012 Andrew Gabbasov <andrew_gabbasov@mentor.com>
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
b87700e3 5#undef TRACE_SYSTEM
9bbf98da 6#define TRACE_SYSTEM rpc
b87700e3 7
9bbf98da
MD
8#if !defined(LTTNG_TRACE_RPC_H) || defined(TRACE_HEADER_MULTI_READ)
9#define LTTNG_TRACE_RPC_H
b87700e3 10
3b4aafcb 11#include <lttng/tracepoint-event.h>
b87700e3
AG
12#include <linux/sunrpc/sched.h>
13#include <linux/sunrpc/clnt.h>
b87700e3 14
b6903d57
MD
15#ifndef ONCE_LTTNG_RPC_H
16#define ONCE_LTTNG_RPC_H
17
b6903d57
MD
18static inline
19int lttng_get_clid(const struct rpc_task *task)
20{
21 struct rpc_clnt *tk_client;
22
23 tk_client = task->tk_client;
24 if (!tk_client)
25 return -1;
26 /*
27 * The cl_clid field is always initialized to positive signed
28 * integers. Negative signed integer values are treated as
29 * errors.
30 */
31 return (int) tk_client->cl_clid;
32}
b6903d57
MD
33
34#endif /* ONCE_LTTNG_RPC_H */
35
05355f0b
MJ
36#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,0,0) || \
37 LTTNG_RHEL_KERNEL_RANGE(4,18,0,193,0,0, 4,19,0,0,0,0))
28fef30f
MJ
38LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status,
39
40 TP_PROTO(const struct rpc_task *task),
41
42 TP_ARGS(task),
43
44 TP_FIELDS(
45 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 46 ctf_integer(int, client_id, lttng_get_clid(task))
28fef30f
MJ
47 ctf_integer(int, status, task->tk_status)
48 )
49)
50
51LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status,
52 TP_PROTO(const struct rpc_task *task),
53
54 TP_ARGS(task)
55)
56
57LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status,
58 TP_PROTO(const struct rpc_task *task),
59
60 TP_ARGS(task)
61)
033520be 62#else
b9dbdfe2
MJ
63LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_status,
64
65 TP_PROTO(struct rpc_task *task),
66
67 TP_ARGS(task),
68
69 TP_FIELDS(
70 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 71 ctf_integer(int, client_id, lttng_get_clid(task))
b9dbdfe2
MJ
72 ctf_integer(int, status, task->tk_status)
73 )
74)
28fef30f
MJ
75
76LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status,
77 TP_PROTO(struct rpc_task *task),
78
79 TP_ARGS(task)
80)
81
3bc29f0a 82LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status,
b87700e3
AG
83 TP_PROTO(struct rpc_task *task),
84
85 TP_ARGS(task)
86)
28fef30f 87#endif
b87700e3 88
5f4c791e 89#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,0,0))
28fef30f
MJ
90LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_connect_status,
91 TP_PROTO(const struct rpc_task *task),
92
93 TP_ARGS(task)
94)
5f4c791e 95#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0))
0f891764
MJ
96LTTNG_TRACEPOINT_EVENT(rpc_connect_status,
97 TP_PROTO(const struct rpc_task *task),
98
99 TP_ARGS(task),
100
101 TP_FIELDS(
b9dbdfe2 102 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 103 ctf_integer(int, client_id, lttng_get_clid(task))
0f891764
MJ
104 ctf_integer(int, status, task->tk_status)
105 )
106)
033520be 107#else
28fef30f
MJ
108LTTNG_TRACEPOINT_EVENT(rpc_connect_status,
109 TP_PROTO(struct rpc_task *task, int status),
110
111 TP_ARGS(task, status),
112
113 TP_FIELDS(
114 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 115 ctf_integer(int, client_id, lttng_get_clid(task))
28fef30f
MJ
116 ctf_integer(int, status, status)
117 )
118)
28fef30f 119#endif
0f891764 120
5f4c791e 121#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0))
0f891764
MJ
122LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running,
123
124 TP_PROTO(const struct rpc_task *task, const void *action),
125
126 TP_ARGS(task, action),
127
128 TP_FIELDS(
b9dbdfe2 129 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 130 ctf_integer(int, client_id, lttng_get_clid(task))
0f891764
MJ
131 ctf_integer_hex(const void *, action, action)
132 ctf_integer(unsigned long, runstate, task->tk_runstate)
133 ctf_integer(int, status, task->tk_status)
134 ctf_integer(unsigned short, flags, task->tk_flags)
135 )
136)
137
138LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_begin,
139
140 TP_PROTO(const struct rpc_task *task, const void *action),
141
142 TP_ARGS(task, action)
143)
144
145LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_run_action,
146
147 TP_PROTO(const struct rpc_task *task, const void *action),
148
149 TP_ARGS(task, action)
150)
151
152LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_complete,
153
154 TP_PROTO(const struct rpc_task *task, const void *action),
155
156 TP_ARGS(task, action)
157)
158
159LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued,
160
161 TP_PROTO(const struct rpc_task *task, const struct rpc_wait_queue *q),
162
163 TP_ARGS(task, q),
164
165 TP_FIELDS(
b9dbdfe2 166 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 167 ctf_integer(int, client_id, lttng_get_clid(task))
0f891764
MJ
168 ctf_integer(unsigned long, timeout, task->tk_timeout)
169 ctf_integer(unsigned long, runstate, task->tk_runstate)
170 ctf_integer(int, status, task->tk_status)
171 ctf_integer(unsigned short, flags, task->tk_flags)
172 ctf_string(q_name, rpc_qname(q))
173 )
174)
175
176LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_sleep,
177
178 TP_PROTO(const struct rpc_task *task, const struct rpc_wait_queue *q),
179
180 TP_ARGS(task, q)
181)
182
183LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup,
184
185 TP_PROTO(const struct rpc_task *task, const struct rpc_wait_queue *q),
186
187 TP_ARGS(task, q)
188)
189
033520be 190#else
b9dbdfe2
MJ
191LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_running,
192
193 TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
194
195 TP_ARGS(clnt, task, action),
196
197 TP_FIELDS(
198 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 199 ctf_integer(int, client_id, lttng_get_clid(task))
b9dbdfe2
MJ
200 ctf_integer_hex(const void *, action, action)
201 ctf_integer(unsigned long, runstate, task->tk_runstate)
202 ctf_integer(int, status, task->tk_status)
203 ctf_integer(unsigned short, flags, task->tk_flags)
204 )
205)
206
207LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_begin,
208
209 TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
210
211 TP_ARGS(clnt, task, action)
212)
213
214LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_run_action,
215
216 TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
217
218 TP_ARGS(clnt, task, action)
219)
220
221LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_running, rpc_task_complete,
222
223 TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
224
225 TP_ARGS(clnt, task, action)
226)
227
228LTTNG_TRACEPOINT_EVENT_CLASS(rpc_task_queued,
229
230 TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
231
232 TP_ARGS(clnt, task, q),
233
234 TP_FIELDS(
235 ctf_integer(unsigned int, task_id, task->tk_pid)
b6903d57 236 ctf_integer(int, client_id, lttng_get_clid(task))
b9dbdfe2
MJ
237 ctf_integer(unsigned long, timeout, task->tk_timeout)
238 ctf_integer(unsigned long, runstate, task->tk_runstate)
239 ctf_integer(int, status, task->tk_status)
240 ctf_integer(unsigned short, flags, task->tk_flags)
241 ctf_string(q_name, rpc_qname(q))
242 )
243)
244
245LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_sleep,
246
247 TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
248
249 TP_ARGS(clnt, task, q)
250)
251
3bc29f0a 252LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup,
b87700e3
AG
253
254 TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
255
256 TP_ARGS(clnt, task, q)
b87700e3 257)
0f891764 258#endif
b87700e3 259
9bbf98da 260#endif /* LTTNG_TRACE_RPC_H */
b87700e3 261
3b4aafcb 262#include <lttng/define_trace.h>
This page took 0.075257 seconds and 4 git commands to generate.