diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-07-16 20:20:52 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-08-01 02:40:25 -0400 |
commit | b53c479a0f44b8990ce106622412a3bf54809944 (patch) | |
tree | 07934618bf23661191b514a66bf8cd49d6369ece /include/litmus | |
parent | a6d64b9717782170ba27c16b6df8191169d92fad (diff) |
New Feature: Arbitrary deadlines.2012.2
Added support for arbitrary deadlines.
Constraint: Relative deadline must be >= exec cost.
Use: Set relative deadline in rt_task::rdeadline. Set value to 0
to default to implicit deadlines.
Limitations: PFAIR not supported by this patch. PFAIR updated to
reject tasks that do not have implicit deadlines.
Diffstat (limited to 'include/litmus')
-rw-r--r-- | include/litmus/litmus.h | 13 | ||||
-rw-r--r-- | include/litmus/rt_param.h | 1 |
2 files changed, 10 insertions, 4 deletions
diff --git a/include/litmus/litmus.h b/include/litmus/litmus.h index aa56eeef7e7d..338245abd6ed 100644 --- a/include/litmus/litmus.h +++ b/include/litmus/litmus.h | |||
@@ -47,18 +47,23 @@ void litmus_exit_task(struct task_struct *tsk); | |||
47 | /* Realtime utility macros */ | 47 | /* Realtime utility macros */ |
48 | #define get_rt_flags(t) (tsk_rt(t)->flags) | 48 | #define get_rt_flags(t) (tsk_rt(t)->flags) |
49 | #define set_rt_flags(t,f) (tsk_rt(t)->flags=(f)) | 49 | #define set_rt_flags(t,f) (tsk_rt(t)->flags=(f)) |
50 | #define is_priority_boosted(t) (tsk_rt(t)->priority_boosted) | ||
51 | #define get_boost_start(t) (tsk_rt(t)->boost_start_time) | ||
52 | |||
53 | /* task_params macros */ | ||
50 | #define get_exec_cost(t) (tsk_rt(t)->task_params.exec_cost) | 54 | #define get_exec_cost(t) (tsk_rt(t)->task_params.exec_cost) |
51 | #define get_exec_time(t) (tsk_rt(t)->job_params.exec_time) | ||
52 | #define get_rt_period(t) (tsk_rt(t)->task_params.period) | 55 | #define get_rt_period(t) (tsk_rt(t)->task_params.period) |
56 | #define get_rt_relative_deadline(t) (tsk_rt(t)->task_params.relative_deadline) | ||
53 | #define get_rt_phase(t) (tsk_rt(t)->task_params.phase) | 57 | #define get_rt_phase(t) (tsk_rt(t)->task_params.phase) |
54 | #define get_partition(t) (tsk_rt(t)->task_params.cpu) | 58 | #define get_partition(t) (tsk_rt(t)->task_params.cpu) |
55 | #define get_priority(t) (tsk_rt(t)->task_params.priority) | 59 | #define get_priority(t) (tsk_rt(t)->task_params.priority) |
60 | #define get_class(t) (tsk_rt(t)->task_params.cls) | ||
61 | |||
62 | /* job_param macros */ | ||
63 | #define get_exec_time(t) (tsk_rt(t)->job_params.exec_time) | ||
56 | #define get_deadline(t) (tsk_rt(t)->job_params.deadline) | 64 | #define get_deadline(t) (tsk_rt(t)->job_params.deadline) |
57 | #define get_release(t) (tsk_rt(t)->job_params.release) | 65 | #define get_release(t) (tsk_rt(t)->job_params.release) |
58 | #define get_class(t) (tsk_rt(t)->task_params.cls) | ||
59 | 66 | ||
60 | #define is_priority_boosted(t) (tsk_rt(t)->priority_boosted) | ||
61 | #define get_boost_start(t) (tsk_rt(t)->boost_start_time) | ||
62 | 67 | ||
63 | #define is_hrt(t) \ | 68 | #define is_hrt(t) \ |
64 | (tsk_rt(t)->task_params.cls == RT_CLASS_HARD) | 69 | (tsk_rt(t)->task_params.cls == RT_CLASS_HARD) |
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h index c4669a276e6f..89ac0dda7d3d 100644 --- a/include/litmus/rt_param.h +++ b/include/litmus/rt_param.h | |||
@@ -56,6 +56,7 @@ typedef enum { | |||
56 | struct rt_task { | 56 | struct rt_task { |
57 | lt_t exec_cost; | 57 | lt_t exec_cost; |
58 | lt_t period; | 58 | lt_t period; |
59 | lt_t relative_deadline; | ||
59 | lt_t phase; | 60 | lt_t phase; |
60 | unsigned int cpu; | 61 | unsigned int cpu; |
61 | unsigned int priority; | 62 | unsigned int priority; |