aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2009-04-24 12:11:07 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2009-04-24 12:11:07 -0400
commit0d59225b505708c1e3ec69392a9cfa109d6610b5 (patch)
tree0e0924db08917e0d4ed6e603f7d52d0ec5220fdd
parent3d0d33c07d203296162e1b703e6027ac8e0edb0e (diff)
G-EDF: release master support bugfix
Don't relink to release master.
-rw-r--r--litmus/sched_gedf.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/litmus/sched_gedf.c b/litmus/sched_gedf.c
index 87469253a8..753bb0418b 100644
--- a/litmus/sched_gedf.c
+++ b/litmus/sched_gedf.c
@@ -339,7 +339,7 @@ static struct task_struct* gedf_schedule(struct task_struct * prev)
339 int out_of_time, sleep, preempt, exists, blocks; 339 int out_of_time, sleep, preempt, exists, blocks;
340 struct task_struct* next = NULL; 340 struct task_struct* next = NULL;
341 341
342 /* Bail out earlier if we are the release master. 342 /* Bail out early if we are the release master.
343 * The release master never schedules any real-time tasks. 343 * The release master never schedules any real-time tasks.
344 */ 344 */
345 if (gedf.release_master == entry->cpu) 345 if (gedf.release_master == entry->cpu)
@@ -474,11 +474,14 @@ static void gedf_task_new(struct task_struct * t, int on_rq, int running)
474 if (running) { 474 if (running) {
475 entry = &per_cpu(gedf_cpu_entries, task_cpu(t)); 475 entry = &per_cpu(gedf_cpu_entries, task_cpu(t));
476 BUG_ON(entry->scheduled); 476 BUG_ON(entry->scheduled);
477 entry->scheduled = t; 477 if (entry->cpu != gedf.release_master) {
478 t->rt_param.scheduled_on = task_cpu(t); 478 entry->scheduled = t;
479 t->rt_param.scheduled_on = task_cpu(t);
480 } else
481 tsk_rt(t)->scheduled_on = NO_CPU;
479 } else 482 } else
480 t->rt_param.scheduled_on = NO_CPU; 483 tsk_rt(t)->scheduled_on = NO_CPU;
481 t->rt_param.linked_on = NO_CPU; 484 tsk_rt(t)->linked_on = NO_CPU;
482 485
483 /* setup job params */ 486 /* setup job params */
484 release_at(t, litmus_clock()); 487 release_at(t, litmus_clock());