diff options
| -rw-r--r-- | litmus/sched_pfair.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/litmus/sched_pfair.c b/litmus/sched_pfair.c index c5ec177f236b..4f9a8c2ecdc3 100644 --- a/litmus/sched_pfair.c +++ b/litmus/sched_pfair.c | |||
| @@ -630,9 +630,14 @@ static void process_out_of_budget_tasks( | |||
| 630 | list_del(&tsk_rt(t)->list); | 630 | list_del(&tsk_rt(t)->list); |
| 631 | if (t != prev || !blocks) | 631 | if (t != prev || !blocks) |
| 632 | { | 632 | { |
| 633 | sched_trace_task_release(t); | 633 | if (time_after(cur_release(t), state->local_tick)) { |
| 634 | add_release(&cpu_cluster(state)->pfair, t); | 634 | TRACE_TASK(t, "adding to release queue (budget exhausted)\n"); |
| 635 | TRACE_TASK(t, "adding to release queue (budget exhausted)\n"); | 635 | add_release(&cpu_cluster(state)->pfair, t); |
| 636 | } else { | ||
| 637 | TRACE_TASK(t, "adding to ready queue (budget exhausted)\n"); | ||
| 638 | sched_trace_task_release(t); | ||
| 639 | __add_ready(&cpu_cluster(state)->pfair, t); | ||
| 640 | } | ||
| 636 | } else { | 641 | } else { |
| 637 | TRACE_TASK(t, "not added to release queue (blocks=%d)\n", blocks); | 642 | TRACE_TASK(t, "not added to release queue (blocks=%d)\n", blocks); |
| 638 | tsk_pfair(t)->needs_requeue = 1; | 643 | tsk_pfair(t)->needs_requeue = 1; |
