aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/sched_gsn_edf.c
diff options
context:
space:
mode:
Diffstat (limited to 'litmus/sched_gsn_edf.c')
-rw-r--r--litmus/sched_gsn_edf.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/litmus/sched_gsn_edf.c b/litmus/sched_gsn_edf.c
index ea96a48b4185..c3344b9d288f 100644
--- a/litmus/sched_gsn_edf.c
+++ b/litmus/sched_gsn_edf.c
@@ -297,11 +297,11 @@ static void check_for_preemptions(void)
297 &per_cpu(gsnedf_cpu_entries, task_cpu(task))); 297 &per_cpu(gsnedf_cpu_entries, task_cpu(task)));
298 if (affinity) 298 if (affinity)
299 last = affinity; 299 last = affinity;
300 else if (last->linked) 300 else if (requeue_preempted_job(last->linked))
301 requeue(last->linked); 301 requeue(last->linked);
302 } 302 }
303#else 303#else
304 if (last->linked) 304 if (requeue_preempted_job(last->linked))
305 requeue(last->linked); 305 requeue(last->linked);
306#endif 306#endif
307 307
@@ -427,9 +427,8 @@ static struct task_struct* gsnedf_schedule(struct task_struct * prev)
427 /* (0) Determine state */ 427 /* (0) Determine state */
428 exists = entry->scheduled != NULL; 428 exists = entry->scheduled != NULL;
429 blocks = exists && !is_running(entry->scheduled); 429 blocks = exists && !is_running(entry->scheduled);
430 out_of_time = exists && 430 out_of_time = exists && budget_enforced(entry->scheduled)
431 budget_enforced(entry->scheduled) && 431 && budget_exhausted(entry->scheduled);
432 budget_exhausted(entry->scheduled);
433 np = exists && is_np(entry->scheduled); 432 np = exists && is_np(entry->scheduled);
434 sleep = exists && get_rt_flags(entry->scheduled) == RT_F_SLEEP; 433 sleep = exists && get_rt_flags(entry->scheduled) == RT_F_SLEEP;
435 preempt = entry->scheduled != entry->linked; 434 preempt = entry->scheduled != entry->linked;
@@ -467,9 +466,9 @@ static struct task_struct* gsnedf_schedule(struct task_struct * prev)
467 /* Any task that is preemptable and either exhausts its execution 466 /* Any task that is preemptable and either exhausts its execution
468 * budget or wants to sleep completes. We may have to reschedule after 467 * budget or wants to sleep completes. We may have to reschedule after
469 * this. Don't do a job completion if we block (can't have timers running 468 * this. Don't do a job completion if we block (can't have timers running
470 * for blocked jobs). Preemption go first for the same reason. 469 * for blocked jobs).
471 */ 470 */
472 if (!np && (out_of_time || sleep) && !blocks && !preempt) 471 if (!np && (out_of_time || sleep) && !blocks)
473 job_completion(entry->scheduled, !sleep); 472 job_completion(entry->scheduled, !sleep);
474 473
475 /* Link pending task if we became unlinked. 474 /* Link pending task if we became unlinked.