aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace/events/litmus.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/trace/events/litmus.h')
-rw-r--r--include/trace/events/litmus.h254
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 */
18TRACE_EVENT(litmus_task_param, 14TRACE_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 */
162TRACE_EVENT(litmus_task_block, 158TRACE_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 */
183TRACE_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
205TRACE_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 */
184TRACE_EVENT(litmus_task_resume, 230TRACE_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 */
209TRACE_EVENT(litmus_sys_release, 258TRACE_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 */
280TRACE_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 */
302TRACE_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
321TRACE_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
345TRACE_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
366TRACE_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
386TRACE_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
411TRACE_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 */