diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2009-12-18 09:08:44 -0500 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2009-12-18 09:08:44 -0500 |
commit | 2f41251f9febad2e54fa338ea63a62818970af0c (patch) | |
tree | 470e7ae6305bc554b1564579586b898fd8da5159 /litmus/sched_gsn_edf.c | |
parent | 0c70a26073633b3879eac57d38f1260c1bebeafc (diff) |
Test kernel tracing events capabilitiestracing-devel
Can events be applied to LITMUS code instead of sched_task_trace ?
PROS:
- architectural indipendency
- easy porting on newer kernel version
- lock free ring buffer implementation already there
CONS:
- need userspace tools conversion to slightly different format
- is it possible to replicate all the previous functionalities?
- only sched_trace_* functions can be implemented through events,
TRACE() debugging features are still implemented in the old way
(??? cannot we simply use the tracing features of the kernel for
debugging purposes ????)
Diffstat (limited to 'litmus/sched_gsn_edf.c')
-rw-r--r-- | litmus/sched_gsn_edf.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/litmus/sched_gsn_edf.c b/litmus/sched_gsn_edf.c index a223e69f2efb..5386f0a24587 100644 --- a/litmus/sched_gsn_edf.c +++ b/litmus/sched_gsn_edf.c | |||
@@ -18,6 +18,8 @@ | |||
18 | #include <litmus/edf_common.h> | 18 | #include <litmus/edf_common.h> |
19 | #include <litmus/sched_trace.h> | 19 | #include <litmus/sched_trace.h> |
20 | 20 | ||
21 | #include <trace/events/sched.h> | ||
22 | |||
21 | #include <litmus/heap.h> | 23 | #include <litmus/heap.h> |
22 | 24 | ||
23 | #include <linux/module.h> | 25 | #include <linux/module.h> |
@@ -321,7 +323,8 @@ static noinline void job_completion(struct task_struct *t, int forced) | |||
321 | { | 323 | { |
322 | BUG_ON(!t); | 324 | BUG_ON(!t); |
323 | 325 | ||
324 | sched_trace_task_completion(t, forced); | 326 | // sched_trace_task_completion(t, forced); |
327 | trace_litmus_task_completion(t, forced); | ||
325 | 328 | ||
326 | TRACE_TASK(t, "job_completion().\n"); | 329 | TRACE_TASK(t, "job_completion().\n"); |
327 | 330 | ||
@@ -330,7 +333,8 @@ static noinline void job_completion(struct task_struct *t, int forced) | |||
330 | /* prepare for next period */ | 333 | /* prepare for next period */ |
331 | prepare_for_next_period(t); | 334 | prepare_for_next_period(t); |
332 | if (is_released(t, litmus_clock())) | 335 | if (is_released(t, litmus_clock())) |
333 | sched_trace_task_release(t); | 336 | trace_litmus_task_release(t); |
337 | // sched_trace_task_release(t); | ||
334 | /* unlink */ | 338 | /* unlink */ |
335 | unlink(t); | 339 | unlink(t); |
336 | /* requeue | 340 | /* requeue |
@@ -558,7 +562,8 @@ static void gsnedf_task_wake_up(struct task_struct *task) | |||
558 | if (is_tardy(task, now)) { | 562 | if (is_tardy(task, now)) { |
559 | /* new sporadic release */ | 563 | /* new sporadic release */ |
560 | release_at(task, now); | 564 | release_at(task, now); |
561 | sched_trace_task_release(task); | 565 | // sched_trace_task_release(task); |
566 | trace_litmus_task_release(task); | ||
562 | } | 567 | } |
563 | else { | 568 | else { |
564 | if (task->rt.time_slice) { | 569 | if (task->rt.time_slice) { |