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