diff options
Diffstat (limited to 'include/trace/events/litmus.h')
-rw-r--r-- | include/trace/events/litmus.h | 254 |
1 files changed, 228 insertions, 26 deletions
diff --git a/include/trace/events/litmus.h b/include/trace/events/litmus.h index 0fffcee02be..c3a92f8ec6e 100644 --- a/include/trace/events/litmus.h +++ b/include/trace/events/litmus.h | |||
@@ -11,10 +11,6 @@ | |||
11 | 11 | ||
12 | #include <litmus/litmus.h> | 12 | #include <litmus/litmus.h> |
13 | #include <litmus/rt_param.h> | 13 | #include <litmus/rt_param.h> |
14 | |||
15 | /* | ||
16 | * Tracing task admission | ||
17 | */ | ||
18 | TRACE_EVENT(litmus_task_param, | 14 | TRACE_EVENT(litmus_task_param, |
19 | 15 | ||
20 | TP_PROTO(struct task_struct *t), | 16 | TP_PROTO(struct task_struct *t), |
@@ -24,9 +20,9 @@ TRACE_EVENT(litmus_task_param, | |||
24 | TP_STRUCT__entry( | 20 | TP_STRUCT__entry( |
25 | __field( pid_t, pid ) | 21 | __field( pid_t, pid ) |
26 | __field( unsigned int, job ) | 22 | __field( unsigned int, job ) |
27 | __field( lt_t, wcet ) | 23 | __field( unsigned long long, wcet ) |
28 | __field( lt_t, period ) | 24 | __field( unsigned long long, period ) |
29 | __field( lt_t, phase ) | 25 | __field( unsigned long long, phase ) |
30 | __field( int, partition ) | 26 | __field( int, partition ) |
31 | ), | 27 | ), |
32 | 28 | ||
@@ -56,8 +52,8 @@ TRACE_EVENT(litmus_task_release, | |||
56 | TP_STRUCT__entry( | 52 | TP_STRUCT__entry( |
57 | __field( pid_t, pid ) | 53 | __field( pid_t, pid ) |
58 | __field( unsigned int, job ) | 54 | __field( unsigned int, job ) |
59 | __field( lt_t, release ) | 55 | __field( unsigned long long, release ) |
60 | __field( lt_t, deadline ) | 56 | __field( unsigned long long, deadline ) |
61 | ), | 57 | ), |
62 | 58 | ||
63 | TP_fast_assign( | 59 | TP_fast_assign( |
@@ -84,8 +80,8 @@ TRACE_EVENT(litmus_switch_to, | |||
84 | TP_STRUCT__entry( | 80 | TP_STRUCT__entry( |
85 | __field( pid_t, pid ) | 81 | __field( pid_t, pid ) |
86 | __field( unsigned int, job ) | 82 | __field( unsigned int, job ) |
87 | __field( lt_t, when ) | 83 | __field( unsigned long long, when ) |
88 | __field( lt_t, exec_time ) | 84 | __field( unsigned long long, exec_time ) |
89 | ), | 85 | ), |
90 | 86 | ||
91 | TP_fast_assign( | 87 | TP_fast_assign( |
@@ -112,8 +108,8 @@ TRACE_EVENT(litmus_switch_away, | |||
112 | TP_STRUCT__entry( | 108 | TP_STRUCT__entry( |
113 | __field( pid_t, pid ) | 109 | __field( pid_t, pid ) |
114 | __field( unsigned int, job ) | 110 | __field( unsigned int, job ) |
115 | __field( lt_t, when ) | 111 | __field( unsigned long long, when ) |
116 | __field( lt_t, exec_time ) | 112 | __field( unsigned long long, exec_time ) |
117 | ), | 113 | ), |
118 | 114 | ||
119 | TP_fast_assign( | 115 | TP_fast_assign( |
@@ -140,7 +136,7 @@ TRACE_EVENT(litmus_task_completion, | |||
140 | TP_STRUCT__entry( | 136 | TP_STRUCT__entry( |
141 | __field( pid_t, pid ) | 137 | __field( pid_t, pid ) |
142 | __field( unsigned int, job ) | 138 | __field( unsigned int, job ) |
143 | __field( lt_t, when ) | 139 | __field( unsigned long long, when ) |
144 | __field( unsigned long, forced ) | 140 | __field( unsigned long, forced ) |
145 | ), | 141 | ), |
146 | 142 | ||
@@ -161,21 +157,71 @@ TRACE_EVENT(litmus_task_completion, | |||
161 | */ | 157 | */ |
162 | TRACE_EVENT(litmus_task_block, | 158 | TRACE_EVENT(litmus_task_block, |
163 | 159 | ||
164 | TP_PROTO(struct task_struct *t), | 160 | TP_PROTO(struct task_struct *t, int lid), |
165 | 161 | ||
166 | TP_ARGS(t), | 162 | TP_ARGS(t, lid), |
163 | |||
164 | TP_STRUCT__entry( | ||
165 | __field( pid_t, pid ) | ||
166 | __field( int, lid ) | ||
167 | __field( unsigned long long, when ) | ||
168 | ), | ||
169 | |||
170 | TP_fast_assign( | ||
171 | __entry->pid = t ? t->pid : 0; | ||
172 | __entry->lid = lid; | ||
173 | __entry->when = litmus_clock(); | ||
174 | ), | ||
175 | |||
176 | TP_printk("(%u) blocks on %d: %Lu\n", __entry->pid, | ||
177 | __entry->lid, __entry->when) | ||
178 | ); | ||
179 | |||
180 | /* | ||
181 | * Lock events | ||
182 | */ | ||
183 | TRACE_EVENT(litmus_resource_acquire, | ||
184 | |||
185 | TP_PROTO(struct task_struct *t, int lid), | ||
186 | |||
187 | TP_ARGS(t, lid), | ||
188 | |||
189 | TP_STRUCT__entry( | ||
190 | __field( pid_t, pid ) | ||
191 | __field( int, lid ) | ||
192 | __field( unsigned long long, when ) | ||
193 | ), | ||
194 | |||
195 | TP_fast_assign( | ||
196 | __entry->pid = t ? t->pid : 0; | ||
197 | __entry->lid = lid; | ||
198 | __entry->when = litmus_clock(); | ||
199 | ), | ||
200 | |||
201 | TP_printk("(%u) acquires %d: %Lu\n", __entry->pid, | ||
202 | __entry->lid, __entry->when) | ||
203 | ); | ||
204 | |||
205 | TRACE_EVENT(litmus_resource_release, | ||
206 | |||
207 | TP_PROTO(struct task_struct *t, int lid), | ||
208 | |||
209 | TP_ARGS(t, lid), | ||
167 | 210 | ||
168 | TP_STRUCT__entry( | 211 | TP_STRUCT__entry( |
169 | __field( pid_t, pid ) | 212 | __field( pid_t, pid ) |
170 | __field( lt_t, when ) | 213 | __field( int, lid ) |
214 | __field( unsigned long long, when ) | ||
171 | ), | 215 | ), |
172 | 216 | ||
173 | TP_fast_assign( | 217 | TP_fast_assign( |
174 | __entry->pid = t ? t->pid : 0; | 218 | __entry->pid = t ? t->pid : 0; |
219 | __entry->lid = lid; | ||
175 | __entry->when = litmus_clock(); | 220 | __entry->when = litmus_clock(); |
176 | ), | 221 | ), |
177 | 222 | ||
178 | TP_printk("(%u) blocks: %Lu\n", __entry->pid, __entry->when) | 223 | TP_printk("(%u) releases %d: %Lu\n", __entry->pid, |
224 | __entry->lid, __entry->when) | ||
179 | ); | 225 | ); |
180 | 226 | ||
181 | /* | 227 | /* |
@@ -183,24 +229,27 @@ TRACE_EVENT(litmus_task_block, | |||
183 | */ | 229 | */ |
184 | TRACE_EVENT(litmus_task_resume, | 230 | TRACE_EVENT(litmus_task_resume, |
185 | 231 | ||
186 | TP_PROTO(struct task_struct *t), | 232 | TP_PROTO(struct task_struct *t, int lid), |
187 | 233 | ||
188 | TP_ARGS(t), | 234 | TP_ARGS(t, lid), |
189 | 235 | ||
190 | TP_STRUCT__entry( | 236 | TP_STRUCT__entry( |
191 | __field( pid_t, pid ) | 237 | __field( pid_t, pid ) |
238 | __field( int, lid ) | ||
192 | __field( unsigned int, job ) | 239 | __field( unsigned int, job ) |
193 | __field( lt_t, when ) | 240 | __field( unsigned long long, when ) |
194 | ), | 241 | ), |
195 | 242 | ||
196 | TP_fast_assign( | 243 | TP_fast_assign( |
197 | __entry->pid = t ? t->pid : 0; | 244 | __entry->pid = t ? t->pid : 0; |
198 | __entry->job = t ? t->rt_param.job_params.job_no : 0; | 245 | __entry->job = t ? t->rt_param.job_params.job_no : 0; |
199 | __entry->when = litmus_clock(); | 246 | __entry->when = litmus_clock(); |
247 | __entry->lid = lid; | ||
200 | ), | 248 | ), |
201 | 249 | ||
202 | TP_printk("resume(job(%u, %u)): %Lu\n", | 250 | TP_printk("resume(job(%u, %u)) on %d: %Lu\n", |
203 | __entry->pid, __entry->job, __entry->when) | 251 | __entry->pid, __entry->job, |
252 | __entry->lid, __entry->when) | ||
204 | ); | 253 | ); |
205 | 254 | ||
206 | /* | 255 | /* |
@@ -208,13 +257,13 @@ TRACE_EVENT(litmus_task_resume, | |||
208 | */ | 257 | */ |
209 | TRACE_EVENT(litmus_sys_release, | 258 | TRACE_EVENT(litmus_sys_release, |
210 | 259 | ||
211 | TP_PROTO(lt_t *start), | 260 | TP_PROTO(unsigned long long *start), |
212 | 261 | ||
213 | TP_ARGS(start), | 262 | TP_ARGS(start), |
214 | 263 | ||
215 | TP_STRUCT__entry( | 264 | TP_STRUCT__entry( |
216 | __field( lt_t, rel ) | 265 | __field( unsigned long long, rel ) |
217 | __field( lt_t, when ) | 266 | __field( unsigned long long, when ) |
218 | ), | 267 | ), |
219 | 268 | ||
220 | TP_fast_assign( | 269 | TP_fast_assign( |
@@ -225,6 +274,159 @@ TRACE_EVENT(litmus_sys_release, | |||
225 | TP_printk("SynRelease(%Lu) at %Lu\n", __entry->rel, __entry->when) | 274 | TP_printk("SynRelease(%Lu) at %Lu\n", __entry->rel, __entry->when) |
226 | ); | 275 | ); |
227 | 276 | ||
277 | /* | ||
278 | * Trace task exit | ||
279 | */ | ||
280 | TRACE_EVENT(litmus_task_exit, | ||
281 | |||
282 | TP_PROTO(struct task_struct *t), | ||
283 | |||
284 | TP_ARGS(t), | ||
285 | |||
286 | TP_STRUCT__entry( | ||
287 | __field( pid_t, pid ) | ||
288 | __field( unsigned long long, max_exec_time ) | ||
289 | ), | ||
290 | |||
291 | TP_fast_assign( | ||
292 | __entry->pid = t ? t->pid : 0; | ||
293 | __entry->max_exec_time = t ? t->rt_param.max_exec_time : 0; | ||
294 | ), | ||
295 | |||
296 | TP_printk("(%u) exit\n", __entry->pid) | ||
297 | ); | ||
298 | |||
299 | /* | ||
300 | * Containers | ||
301 | */ | ||
302 | TRACE_EVENT(litmus_container_param, | ||
303 | |||
304 | TP_PROTO(int cid, const char *name), | ||
305 | |||
306 | TP_ARGS(cid, name), | ||
307 | |||
308 | TP_STRUCT__entry( | ||
309 | __field( int, cid ) | ||
310 | __array( char, name, TASK_COMM_LEN ) | ||
311 | ), | ||
312 | |||
313 | TP_fast_assign( | ||
314 | memcpy(__entry->name, name, TASK_COMM_LEN); | ||
315 | __entry->cid = cid; | ||
316 | ), | ||
317 | |||
318 | TP_printk("container, name: %s, id: %d\n", __entry->name, __entry->cid) | ||
319 | ); | ||
320 | |||
321 | TRACE_EVENT(litmus_server_param, | ||
322 | |||
323 | TP_PROTO(int sid, int cid, unsigned long long wcet, unsigned long long period), | ||
324 | |||
325 | TP_ARGS(sid, cid, wcet, period), | ||
326 | |||
327 | TP_STRUCT__entry( | ||
328 | __field( int, sid ) | ||
329 | __field( int, cid ) | ||
330 | __field( unsigned long long, wcet ) | ||
331 | __field( unsigned long long, period ) | ||
332 | ), | ||
333 | |||
334 | TP_fast_assign( | ||
335 | __entry->cid = cid; | ||
336 | __entry->sid = sid; | ||
337 | __entry->wcet = wcet; | ||
338 | __entry->period = period; | ||
339 | ), | ||
340 | |||
341 | TP_printk("server(%llu, %llu), sid: %llu, cont: %llu\n", | ||
342 | __entry->wcet, __entry->period, __entry->sid, __entry->cid) | ||
343 | ); | ||
344 | |||
345 | TRACE_EVENT(litmus_server_switch_to, | ||
346 | |||
347 | TP_PROTO(int sid, unsigned int job, int tid), | ||
348 | |||
349 | TP_ARGS(sid, job, tid), | ||
350 | |||
351 | TP_STRUCT__entry( | ||
352 | __field( int, sid) | ||
353 | __field( unsigned int, job) | ||
354 | __field( int, tid) | ||
355 | ), | ||
356 | |||
357 | TP_fast_assign( | ||
358 | __entry->sid = sid; | ||
359 | __entry->tid = tid; | ||
360 | __entry->job = job; | ||
361 | ), | ||
362 | |||
363 | TP_printk("switch_to(server(%d, %u)): %d\n", __entry->sid, __entry->job, __entry->tid) | ||
364 | ); | ||
365 | |||
366 | TRACE_EVENT(litmus_server_switch_away, | ||
367 | |||
368 | TP_PROTO(int sid, unsigned int job, int tid), | ||
369 | |||
370 | TP_ARGS(sid, job, tid), | ||
371 | |||
372 | TP_STRUCT__entry( | ||
373 | __field( int, sid) | ||
374 | __field( unsigned int, job) | ||
375 | __field( int, tid) | ||
376 | ), | ||
377 | |||
378 | TP_fast_assign( | ||
379 | __entry->sid = sid; | ||
380 | __entry->tid = tid; | ||
381 | ), | ||
382 | |||
383 | TP_printk("switch_away(server(%d, %u)): %d\n", __entry->sid, __entry->job, __entry->tid) | ||
384 | ); | ||
385 | |||
386 | TRACE_EVENT(litmus_server_release, | ||
387 | |||
388 | TP_PROTO(int sid, unsigned int job, | ||
389 | unsigned long long release, | ||
390 | unsigned long long deadline), | ||
391 | |||
392 | TP_ARGS(sid, job, release, deadline), | ||
393 | |||
394 | TP_STRUCT__entry( | ||
395 | __field( int, sid) | ||
396 | __field( unsigned int, job) | ||
397 | __field( unsigned long long, release) | ||
398 | __field( unsigned long long, deadline) | ||
399 | ), | ||
400 | |||
401 | TP_fast_assign( | ||
402 | __entry->sid = sid; | ||
403 | __entry->job = job; | ||
404 | __entry->release = release; | ||
405 | __entry->deadline = deadline; | ||
406 | ), | ||
407 | |||
408 | TP_printk("release(server(%d, %u)), release: %llu, deadline: %llu\n", __entry->sid, __entry->job, __entry->release, __entry->deadline) | ||
409 | ); | ||
410 | |||
411 | TRACE_EVENT(litmus_server_completion, | ||
412 | |||
413 | TP_PROTO(int sid, int job), | ||
414 | |||
415 | TP_ARGS(sid, job), | ||
416 | |||
417 | TP_STRUCT__entry( | ||
418 | __field( int, sid) | ||
419 | __field( unsigned int, job) | ||
420 | ), | ||
421 | |||
422 | TP_fast_assign( | ||
423 | __entry->sid = sid; | ||
424 | __entry->job = job; | ||
425 | ), | ||
426 | |||
427 | TP_printk("completion(server(%d, %d))\n", __entry->sid, __entry->job) | ||
428 | ); | ||
429 | |||
228 | #endif /* _SCHED_TASK_TRACEPOINT_H */ | 430 | #endif /* _SCHED_TASK_TRACEPOINT_H */ |
229 | 431 | ||
230 | /* Must stay outside the protection */ | 432 | /* Must stay outside the protection */ |