0bbb717c642ded8faa1bab1526a310a886b71c5f
[lttng-modules.git] / include / instrumentation / events / rpc.h
1 // SPDX-FileCopyrightText: 2012 Andrew Gabbasov <andrew_gabbasov@mentor.com>
2 //
3 // SPDX-License-Identifier: GPL-2.0-only
4
5 #undef TRACE_SYSTEM
6 #define TRACE_SYSTEM rpc
7
8 #if !defined(LTTNG_TRACE_RPC_H) || defined(TRACE_HEADER_MULTI_READ)
9 #define LTTNG_TRACE_RPC_H
10
11 #include <lttng/tracepoint-event.h>
12 #include <linux/sunrpc/sched.h>
13 #include <linux/sunrpc/clnt.h>
14
15 #ifndef ONCE_LTTNG_RPC_H
16 #define ONCE_LTTNG_RPC_H
17
18 static inline
19 int 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 }
33
34 #endif /* ONCE_LTTNG_RPC_H */
35
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))
38 LTTNG_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)
46 ctf_integer(int, client_id, lttng_get_clid(task))
47 ctf_integer(int, status, task->tk_status)
48 )
49 )
50
51 LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status,
52 TP_PROTO(const struct rpc_task *task),
53
54 TP_ARGS(task)
55 )
56
57 LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status,
58 TP_PROTO(const struct rpc_task *task),
59
60 TP_ARGS(task)
61 )
62 #else
63 LTTNG_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)
71 ctf_integer(int, client_id, lttng_get_clid(task))
72 ctf_integer(int, status, task->tk_status)
73 )
74 )
75
76 LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_call_status,
77 TP_PROTO(struct rpc_task *task),
78
79 TP_ARGS(task)
80 )
81
82 LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_bind_status,
83 TP_PROTO(struct rpc_task *task),
84
85 TP_ARGS(task)
86 )
87 #endif
88
89 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,0,0))
90 LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_status, rpc_connect_status,
91 TP_PROTO(const struct rpc_task *task),
92
93 TP_ARGS(task)
94 )
95 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0))
96 LTTNG_TRACEPOINT_EVENT(rpc_connect_status,
97 TP_PROTO(const struct rpc_task *task),
98
99 TP_ARGS(task),
100
101 TP_FIELDS(
102 ctf_integer(unsigned int, task_id, task->tk_pid)
103 ctf_integer(int, client_id, lttng_get_clid(task))
104 ctf_integer(int, status, task->tk_status)
105 )
106 )
107 #else
108 LTTNG_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)
115 ctf_integer(int, client_id, lttng_get_clid(task))
116 ctf_integer(int, status, status)
117 )
118 )
119 #endif
120
121 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0))
122 LTTNG_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(
129 ctf_integer(unsigned int, task_id, task->tk_pid)
130 ctf_integer(int, client_id, lttng_get_clid(task))
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
138 LTTNG_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
145 LTTNG_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
152 LTTNG_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
159 LTTNG_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(
166 ctf_integer(unsigned int, task_id, task->tk_pid)
167 ctf_integer(int, client_id, lttng_get_clid(task))
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
176 LTTNG_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
183 LTTNG_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
190 #else
191 LTTNG_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)
199 ctf_integer(int, client_id, lttng_get_clid(task))
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
207 LTTNG_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
214 LTTNG_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
221 LTTNG_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
228 LTTNG_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)
236 ctf_integer(int, client_id, lttng_get_clid(task))
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
245 LTTNG_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
252 LTTNG_TRACEPOINT_EVENT_INSTANCE(rpc_task_queued, rpc_task_wakeup,
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)
257 )
258 #endif
259
260 #endif /* LTTNG_TRACE_RPC_H */
261
262 #include <lttng/define_trace.h>
This page took 0.035733 seconds and 5 git commands to generate.