diff options
Diffstat (limited to 'litmus/sched_edfsc.c')
-rw-r--r-- | litmus/sched_edfsc.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/litmus/sched_edfsc.c b/litmus/sched_edfsc.c index dbe49c6717bc..97cead918890 100644 --- a/litmus/sched_edfsc.c +++ b/litmus/sched_edfsc.c | |||
@@ -453,19 +453,18 @@ static void c_release(struct task_struct *t) { | |||
453 | // Make our cpu available again | 453 | // Make our cpu available again |
454 | if (!bheap_node_in_heap(entry->hn)) | 454 | if (!bheap_node_in_heap(entry->hn)) |
455 | add_cpu_to_global(entry); | 455 | add_cpu_to_global(entry); |
456 | if (is_current_running()) { //since we don't support blocking, this should always be true | 456 | // Note that container's aren't real tasks and thus can't block |
457 | if (tsk_rt(t)->edfsc_params.domain->scheduled) { | 457 | if (tsk_rt(t)->edfsc_params.domain->scheduled) { |
458 | requeue(tsk_rt(t)->edfsc_params.domain->scheduled); | 458 | requeue(tsk_rt(t)->edfsc_params.domain->scheduled); |
459 | tsk_rt(t)->edfsc_params.domain->scheduled = NULL; | 459 | tsk_rt(t)->edfsc_params.domain->scheduled = NULL; |
460 | } | ||
461 | // Let g_preempt_check() decide what to run, don't impose | ||
462 | unlink(t); | ||
463 | // Request to be scheduled globally again | ||
464 | if (!is_queued(t)) | ||
465 | requeue(t); | ||
466 | // Re-run our EDF scheduling to adjust for the added core | ||
467 | g_preempt_check(); | ||
468 | } | 460 | } |
461 | // Let g_preempt_check() decide what to run, don't impose | ||
462 | unlink(t); | ||
463 | // Request to be scheduled globally again | ||
464 | if (!is_queued(t)) | ||
465 | requeue(t); | ||
466 | // Re-run our EDF scheduling to adjust for the added core | ||
467 | g_preempt_check(); | ||
469 | } | 468 | } |
470 | } | 469 | } |
471 | 470 | ||