diff options
Diffstat (limited to 'litmus/edf_common.c')
-rw-r--r-- | litmus/edf_common.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/litmus/edf_common.c b/litmus/edf_common.c index f4881452373d..916b1b4309b7 100644 --- a/litmus/edf_common.c +++ b/litmus/edf_common.c | |||
@@ -92,10 +92,20 @@ int edf_higher_prio(struct task_struct* first, struct task_struct* second) | |||
92 | 92 | ||
93 | #ifdef CONFIG_REALTIME_AUX_TASKS | 93 | #ifdef CONFIG_REALTIME_AUX_TASKS |
94 | { | 94 | { |
95 | /* statically prioritize all auxillary tasks that have no inheritance | ||
96 | * below all other regular real-time tasks. | ||
97 | */ | ||
98 | 95 | ||
96 | /* run aux tasks at max priority */ | ||
97 | if (first->rt_param.is_aux_task != second->rt_param.is_aux_task) | ||
98 | { | ||
99 | return (first->rt_param.is_aux_task > second->rt_param.is_aux_task); | ||
100 | } | ||
101 | else if(first->rt_param.is_aux_task && second->rt_param.is_aux_task) | ||
102 | { | ||
103 | first = first->group_leader; | ||
104 | second = second->group_leader; | ||
105 | } | ||
106 | |||
107 | |||
108 | #if 0 | ||
99 | int first_lo_aux, second_lo_aux; | 109 | int first_lo_aux, second_lo_aux; |
100 | int first_hi_aux, second_hi_aux; | 110 | int first_hi_aux, second_hi_aux; |
101 | first_lo_aux = first->rt_param.is_aux_task && !first->rt_param.inh_task; | 111 | first_lo_aux = first->rt_param.is_aux_task && !first->rt_param.inh_task; |
@@ -123,6 +133,8 @@ int edf_higher_prio(struct task_struct* first, struct task_struct* second) | |||
123 | TRACE_CUR("hi aux tie break: %s/%d >> %s/%d --- %d\n", first->comm, first->pid, second->comm, second->pid, aux_hi_tie_break); | 133 | TRACE_CUR("hi aux tie break: %s/%d >> %s/%d --- %d\n", first->comm, first->pid, second->comm, second->pid, aux_hi_tie_break); |
124 | return aux_hi_tie_break; | 134 | return aux_hi_tie_break; |
125 | } | 135 | } |
136 | #endif | ||
137 | |||
126 | } | 138 | } |
127 | #endif | 139 | #endif |
128 | 140 | ||
@@ -240,6 +252,7 @@ int edf_higher_prio(struct task_struct* first, struct task_struct* second) | |||
240 | else if (first_task->rt_param.is_proxy_thread == second_task->rt_param.is_proxy_thread) { | 252 | else if (first_task->rt_param.is_proxy_thread == second_task->rt_param.is_proxy_thread) { |
241 | #endif | 253 | #endif |
242 | 254 | ||
255 | #if 0 | ||
243 | #ifdef CONFIG_REALTIME_AUX_TASKS | 256 | #ifdef CONFIG_REALTIME_AUX_TASKS |
244 | /* is this dead code? */ | 257 | /* is this dead code? */ |
245 | if (tsk_rt(first)->is_aux_task < tsk_rt(second)->is_aux_task) { | 258 | if (tsk_rt(first)->is_aux_task < tsk_rt(second)->is_aux_task) { |
@@ -247,6 +260,7 @@ int edf_higher_prio(struct task_struct* first, struct task_struct* second) | |||
247 | } | 260 | } |
248 | else if (tsk_rt(first)->is_aux_task == tsk_rt(second)->is_aux_task) { | 261 | else if (tsk_rt(first)->is_aux_task == tsk_rt(second)->is_aux_task) { |
249 | #endif | 262 | #endif |
263 | #endif | ||
250 | 264 | ||
251 | /* Something could be wrong if you get this far. */ | 265 | /* Something could be wrong if you get this far. */ |
252 | if (unlikely(first->rt_param.inh_task == | 266 | if (unlikely(first->rt_param.inh_task == |
@@ -283,10 +297,12 @@ int edf_higher_prio(struct task_struct* first, struct task_struct* second) | |||
283 | return 1; | 297 | return 1; |
284 | } | 298 | } |
285 | } | 299 | } |
286 | 300 | #if 0 | |
287 | #ifdef CONFIG_REALTIME_AUX_TASKS | 301 | #ifdef CONFIG_REALTIME_AUX_TASKS |
288 | } | 302 | } |
289 | #endif | 303 | #endif |
304 | #endif | ||
305 | |||
290 | #ifdef CONFIG_LITMUS_SOFTIRQD | 306 | #ifdef CONFIG_LITMUS_SOFTIRQD |
291 | } | 307 | } |
292 | #endif | 308 | #endif |