aboutsummaryrefslogtreecommitdiffstats
path: root/include/litmus/litmus.h
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2011-01-28 17:29:03 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2011-01-28 19:18:53 -0500
commit1a6154cb07727ae9716de118da15dbdb399983b9 (patch)
tree73b222136d53fff9564306b6a64204bba6203618 /include/litmus/litmus.h
parentb8be8fb192541fad88983ef6f9270cec1b51b59a (diff)
Implementation of the EDZL scheduler.wip-edzl-final
Implementation of the EDZL scheduler. Zero-laxity points are tracked by timers while jobs are in the pending state. Locking primatives are not supported.
Diffstat (limited to 'include/litmus/litmus.h')
-rw-r--r--include/litmus/litmus.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/litmus/litmus.h b/include/litmus/litmus.h
index 246483783fc0..3203a0809f96 100644
--- a/include/litmus/litmus.h
+++ b/include/litmus/litmus.h
@@ -54,6 +54,12 @@ void litmus_exit_task(struct task_struct *tsk);
54#define get_release(t) (tsk_rt(t)->job_params.release) 54#define get_release(t) (tsk_rt(t)->job_params.release)
55#define get_class(t) (tsk_rt(t)->task_params.cls) 55#define get_class(t) (tsk_rt(t)->task_params.cls)
56 56
57#ifdef CONFIG_PLUGIN_EDZL
58#define get_zerolaxity(t) (tsk_rt(t)->job_params.zero_laxity)
59#define set_zerolaxity(t) (tsk_rt(t)->job_params.zero_laxity=1)
60#define clear_zerolaxity(t) (tsk_rt(t)->job_params.zero_laxity=0)
61#endif
62
57inline static int budget_exhausted(struct task_struct* t) 63inline static int budget_exhausted(struct task_struct* t)
58{ 64{
59 return get_exec_time(t) >= get_exec_cost(t); 65 return get_exec_time(t) >= get_exec_cost(t);
@@ -86,6 +92,21 @@ static inline lt_t litmus_clock(void)
86 return ktime_to_ns(ktime_get()); 92 return ktime_to_ns(ktime_get());
87} 93}
88 94
95#ifdef CONFIG_PLUGIN_EDZL
96inline static lt_t laxity_remaining(struct task_struct* t)
97{
98 lt_t now = litmus_clock();
99 lt_t remaining = budget_remaining(t);
100 lt_t deadline = get_deadline(t);
101
102 if(lt_before(now + remaining, deadline))
103 return (deadline - (now + remaining));
104 else
105 return 0;
106}
107#endif
108
109
89/* A macro to convert from nanoseconds to ktime_t. */ 110/* A macro to convert from nanoseconds to ktime_t. */
90#define ns_to_ktime(t) ktime_add_ns(ktime_set(0, 0), t) 111#define ns_to_ktime(t) ktime_add_ns(ktime_set(0, 0), t)
91 112