aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2012-11-15 15:41:54 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2013-04-16 23:06:07 -0400
commit5848abe61548e8f5f4a98faf5364207fcb514545 (patch)
tree6a51ca5ad3b3383eed2432e783a2a83eb07f4496
parent7b28f49b60e39d44decba6e4018cb3f021355c69 (diff)
Merged with latest kernelshark branch.
Conflicts: include/litmus/sched_trace.h include/trace/events/litmus.h
-rw-r--r--include/litmus/sched_trace.h40
-rw-r--r--include/trace/events/litmus.h50
-rw-r--r--litmus/litmus.c2
3 files changed, 35 insertions, 57 deletions
diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h
index 2f992789affb..fa7042f744cb 100644
--- a/include/litmus/sched_trace.h
+++ b/include/litmus/sched_trace.h
@@ -208,6 +208,15 @@ feather_callback void do_sched_trace_task_tardy(unsigned long id,
208#define trace_litmus_server_release(sid, job, release, deadline) 208#define trace_litmus_server_release(sid, job, release, deadline)
209#define trace_litmus_server_completion(sid, job) 209#define trace_litmus_server_completion(sid, job)
210 210
211#define trace_litmus_container_param(cid, name)
212#define trace_litmus_server_param(sid, cid, wcet, time)
213#define trace_litmus_server_switch_to(sid, job, tid, tjob, cpu)
214#define trace_litmus_server_switch_away(sid, job, tid, tjob, cpu)
215#define trace_litmus_server_release(sid, job, release, deadline)
216#define trace_litmus_server_completion(sid, job)
217#define trace_litmus_server_block(sid)
218#define trace_litmus_server_resume(sid)
219
211#endif 220#endif
212 221
213 222
@@ -296,25 +305,6 @@ feather_callback void do_sched_trace_task_tardy(unsigned long id,
296 trace_litmus_sys_release(when); \ 305 trace_litmus_sys_release(when); \
297 } while (0) 306 } while (0)
298 307
299#define sched_trace_task_exit(t) \
300 do { \
301 SCHED_TRACE(SCHED_TRACE_BASE_ID + 11, \
302 do_sched_trace_task_exit, t); \
303 trace_litmus_task_exit(t); \
304 } while (0)
305
306
307#define sched_trace_task_tardy(t) \
308 do { \
309 SCHED_TRACE(SCHED_TRACE_BASE_ID + 12, \
310 do_sched_trace_task_tardy, t); \
311 } while (0)
312
313#define QT_START lt_t _qt_start = litmus_clock()
314#define QT_END \
315 sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \
316 TRACE_ARGS, litmus_clock() - _qt_start)
317
318#define sched_trace_container_param(cid, name) \ 308#define sched_trace_container_param(cid, name) \
319 do { \ 309 do { \
320 trace_litmus_container_param(cid, name); \ 310 trace_litmus_container_param(cid, name); \
@@ -325,19 +315,19 @@ feather_callback void do_sched_trace_task_tardy(unsigned long id,
325 trace_litmus_server_param(sid, cid, wcet, period); \ 315 trace_litmus_server_param(sid, cid, wcet, period); \
326 } while(0) 316 } while(0)
327 317
328#define sched_trace_server_switch_to(sid, job, tid) \ 318#define sched_trace_server_switch_to(sid, job, tid, tjob, cpu) \
329 do { \ 319 do { \
330 trace_litmus_server_switch_to(sid, job, tid); \ 320 trace_litmus_server_switch_to(sid, job, tid, tjob, cpu);\
331 } while(0) 321 } while(0)
332 322
333#define sched_trace_server_switch_away(sid, job, tid) \ 323#define sched_trace_server_switch_away(sid, job, tid, tjob, cpu) \
334 do { \ 324 do { \
335 trace_litmus_server_switch_away(sid, job, tid); \ 325 trace_litmus_server_switch_away(sid, job, tid, tjob, cpu);\
336 } while (0) 326 } while (0)
337 327
338#define sched_trace_server_release(sid, job, rel, dead) \ 328#define sched_trace_server_release(sid, job, release, deadline) \
339 do { \ 329 do { \
340 trace_litmus_server_release(sid, job, rel, dead); \ 330 trace_litmus_server_release(sid, job, release, deadline); \
341 } while (0) 331 } while (0)
342 332
343#define sched_trace_server_completion(sid, job) \ 333#define sched_trace_server_completion(sid, job) \
diff --git a/include/trace/events/litmus.h b/include/trace/events/litmus.h
index c3a92f8ec6ef..ba4217bc7049 100644
--- a/include/trace/events/litmus.h
+++ b/include/trace/events/litmus.h
@@ -275,28 +275,6 @@ TRACE_EVENT(litmus_sys_release,
275); 275);
276 276
277/* 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 278 * Containers
301 */ 279 */
302TRACE_EVENT(litmus_container_param, 280TRACE_EVENT(litmus_container_param,
@@ -344,43 +322,54 @@ TRACE_EVENT(litmus_server_param,
344 322
345TRACE_EVENT(litmus_server_switch_to, 323TRACE_EVENT(litmus_server_switch_to,
346 324
347 TP_PROTO(int sid, unsigned int job, int tid), 325 TP_PROTO(int sid, unsigned int job, int tid, unsigned int tjob, int cpu),
348 326
349 TP_ARGS(sid, job, tid), 327 TP_ARGS(sid, job, tid, tjob, cpu),
350 328
351 TP_STRUCT__entry( 329 TP_STRUCT_entry(
352 __field( int, sid) 330 __field( int, sid)
353 __field( unsigned int, job) 331 __field( unsigned int, job)
354 __field( int, tid) 332 __field( int, tid)
333 __field( unsigned int, tjob)
334 __field( int, cpu)
355 ), 335 ),
356 336
357 TP_fast_assign( 337 TP_fast_assign(
358 __entry->sid = sid; 338 __entry->sid = sid;
359 __entry->tid = tid; 339 __entry->tid = tid;
360 __entry->job = job; 340 __entry->job = job;
341 __entry->tjob = tjob;
342 __entry->cpu = cpu;
361 ), 343 ),
362 344
363 TP_printk("switch_to(server(%d, %u)): %d\n", __entry->sid, __entry->job, __entry->tid) 345 TP_printk("switch_to(server(%d, %u)): (%d, %d) on %d\n",
346 __entry->sid, __entry->job, __entry->tid, __entry->tjob, __entry->cpu)
364); 347);
365 348
366TRACE_EVENT(litmus_server_switch_away, 349TRACE_EVENT(litmus_server_switch_away,
367 350
368 TP_PROTO(int sid, unsigned int job, int tid), 351 TP_PROTO(int sid, unsigned int job, int tid, unsigned int tjob, int cpu),
369 352
370 TP_ARGS(sid, job, tid), 353 TP_ARGS(sid, job, tid, tjob, cpu),
371 354
372 TP_STRUCT__entry( 355 TP_STRUCT__entry(
373 __field( int, sid) 356 __field( int, sid)
374 __field( unsigned int, job) 357 __field( unsigned int, job)
375 __field( int, tid) 358 __field( int, tid)
359 __field( unsigned int, tjob)
360 __field( int, cpu)
376 ), 361 ),
377 362
378 TP_fast_assign( 363 TP_fast_assign(
379 __entry->sid = sid; 364 __entry->sid = sid;
380 __entry->tid = tid; 365 __entry->tid = tid;
366 __entry->job = job;
367 __entry->tjob = tjob;
368 __entry->cpu = cpu;
381 ), 369 ),
382 370
383 TP_printk("switch_away(server(%d, %u)): %d\n", __entry->sid, __entry->job, __entry->tid) 371 TP_printk("switch_away(server(%d, %u)): (%d, %d) on %d\n",
372 __entry->sid, __entry->job, __entry->tid, __entry->tjob, __entry->cpu)
384); 373);
385 374
386TRACE_EVENT(litmus_server_release, 375TRACE_EVENT(litmus_server_release,
@@ -405,7 +394,8 @@ TRACE_EVENT(litmus_server_release,
405 __entry->deadline = deadline; 394 __entry->deadline = deadline;
406 ), 395 ),
407 396
408 TP_printk("release(server(%d, %u)), release: %llu, deadline: %llu\n", __entry->sid, __entry->job, __entry->release, __entry->deadline) 397 TP_printk("release(server(%d, %u)), release: %llu, deadline: %llu\n",
398 __entry->sid, __entry->job, __entry->release, __entry->deadline)
409); 399);
410 400
411TRACE_EVENT(litmus_server_completion, 401TRACE_EVENT(litmus_server_completion,
diff --git a/litmus/litmus.c b/litmus/litmus.c
index 3516463663bc..dc94be71bfb6 100644
--- a/litmus/litmus.c
+++ b/litmus/litmus.c
@@ -384,8 +384,6 @@ void litmus_exit_task(struct task_struct* tsk)
384{ 384{
385 if (is_realtime(tsk)) { 385 if (is_realtime(tsk)) {
386 sched_trace_task_completion(tsk, 1); 386 sched_trace_task_completion(tsk, 1);
387 sched_trace_task_exit(tsk);
388 sched_trace_task_tardy(tsk);
389 387
390 litmus->task_exit(tsk); 388 litmus->task_exit(tsk);
391 389