Commit | Line | Data |
---|---|---|
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 |
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 | } | |
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 |
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) | |
b6903d57 | 46 | ctf_integer(int, client_id, lttng_get_clid(task)) |
28fef30f MJ |
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 | ) | |
033520be | 62 | #else |
b9dbdfe2 MJ |
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) | |
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 | |
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 | ||
3bc29f0a | 82 | LTTNG_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 |
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 | ) | |
5f4c791e | 95 | #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,17,0)) |
0f891764 MJ |
96 | LTTNG_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 |
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) | |
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 |
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( | |
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 | ||
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( | |
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 | ||
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 | ||
033520be | 190 | #else |
b9dbdfe2 MJ |
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) | |
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 | ||
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) | |
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 | ||
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 | ||
3bc29f0a | 252 | LTTNG_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> |