aboutsummaryrefslogtreecommitdiffstats
path: root/litmus
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2009-12-18 09:08:44 -0500
committerAndrea Bastoni <bastoni@cs.unc.edu>2009-12-18 09:08:44 -0500
commit2f41251f9febad2e54fa338ea63a62818970af0c (patch)
tree470e7ae6305bc554b1564579586b898fd8da5159 /litmus
parent0c70a26073633b3879eac57d38f1260c1bebeafc (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')
-rw-r--r--litmus/litmus.c8
-rw-r--r--litmus/rt_domain.c5
-rw-r--r--litmus/sched_gsn_edf.c11
-rw-r--r--litmus/sched_litmus.c3
4 files changed, 20 insertions, 7 deletions
diff --git a/litmus/litmus.c b/litmus/litmus.c
index de751a14d77c..c4c74fe299fc 100644
--- a/litmus/litmus.c
+++ b/litmus/litmus.c
@@ -19,6 +19,8 @@
19 19
20#include <litmus/trace.h> 20#include <litmus/trace.h>
21 21
22#include <trace/events/sched.h>
23
22#include <litmus/rt_domain.h> 24#include <litmus/rt_domain.h>
23 25
24/* Number of RT tasks that exist in the system */ 26/* Number of RT tasks that exist in the system */
@@ -342,7 +344,8 @@ long litmus_admit_task(struct task_struct* tsk)
342 344
343 if (!retval) { 345 if (!retval) {
344 sched_trace_task_name(tsk); 346 sched_trace_task_name(tsk);
345 sched_trace_task_param(tsk); 347// sched_trace_task_param(tsk);
348 trace_litmus_task_param(tsk);
346 atomic_inc(&rt_task_count); 349 atomic_inc(&rt_task_count);
347 } 350 }
348 351
@@ -355,7 +358,8 @@ out:
355void litmus_exit_task(struct task_struct* tsk) 358void litmus_exit_task(struct task_struct* tsk)
356{ 359{
357 if (is_realtime(tsk)) { 360 if (is_realtime(tsk)) {
358 sched_trace_task_completion(tsk, 1); 361// sched_trace_task_completion(tsk, 1);
362 trace_litmus_task_completion(tsk, 1);
359 363
360 litmus->task_exit(tsk); 364 litmus->task_exit(tsk);
361 365
diff --git a/litmus/rt_domain.c b/litmus/rt_domain.c
index 62c9fdcd22be..d5ece53fa61e 100644
--- a/litmus/rt_domain.c
+++ b/litmus/rt_domain.c
@@ -19,6 +19,8 @@
19 19
20#include <litmus/trace.h> 20#include <litmus/trace.h>
21 21
22#include <trace/events/sched.h>
23
22#include <litmus/heap.h> 24#include <litmus/heap.h>
23 25
24static int dummy_resched(rt_domain_t *rt) 26static int dummy_resched(rt_domain_t *rt)
@@ -181,7 +183,8 @@ static void arm_release_timer(rt_domain_t *_rt)
181 list_for_each_safe(pos, safe, &list) { 183 list_for_each_safe(pos, safe, &list) {
182 /* pick task of work list */ 184 /* pick task of work list */
183 t = list_entry(pos, struct task_struct, rt_param.list); 185 t = list_entry(pos, struct task_struct, rt_param.list);
184 sched_trace_task_release(t); 186// sched_trace_task_release(t);
187 trace_litmus_task_release(t);
185 list_del(pos); 188 list_del(pos);
186 189
187 /* put into release heap while holding release_lock */ 190 /* put into release heap while holding release_lock */
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) {
diff --git a/litmus/sched_litmus.c b/litmus/sched_litmus.c
index 4d1cdacbeb9f..2aa609466cde 100644
--- a/litmus/sched_litmus.c
+++ b/litmus/sched_litmus.c
@@ -145,7 +145,8 @@ static void enqueue_task_litmus(struct rq *rq, struct task_struct *p,
145 int wakeup) 145 int wakeup)
146{ 146{
147 if (wakeup) { 147 if (wakeup) {
148 sched_trace_task_resume(p); 148// sched_trace_task_resume(p);
149 trace_litmus_task_resume(p);
149 tsk_rt(p)->present = 1; 150 tsk_rt(p)->present = 1;
150 litmus->task_wake_up(p); 151 litmus->task_wake_up(p);
151 } else 152 } else