diff options
Diffstat (limited to 'litmus')
| -rw-r--r-- | litmus/sched_cedf.c | 30 | ||||
| -rw-r--r-- | litmus/sched_gsn_edf.c | 30 |
2 files changed, 22 insertions, 38 deletions
diff --git a/litmus/sched_cedf.c b/litmus/sched_cedf.c index 62d28d2bf1c8..b45b46fc4fca 100644 --- a/litmus/sched_cedf.c +++ b/litmus/sched_cedf.c | |||
| @@ -595,25 +595,17 @@ static void cedf_task_wake_up(struct task_struct *task) | |||
| 595 | cluster = task_cpu_cluster(task); | 595 | cluster = task_cpu_cluster(task); |
| 596 | 596 | ||
| 597 | raw_spin_lock_irqsave(&cluster->cluster_lock, flags); | 597 | raw_spin_lock_irqsave(&cluster->cluster_lock, flags); |
| 598 | /* We need to take suspensions because of semaphores into | 598 | now = litmus_clock(); |
| 599 | * account! If a job resumes after being suspended due to acquiring | 599 | if (is_tardy(task, now)) { |
| 600 | * a semaphore, it should never be treated as a new job release. | 600 | /* new sporadic release */ |
| 601 | */ | 601 | release_at(task, now); |
| 602 | if (get_rt_flags(task) == RT_F_EXIT_SEM) { | 602 | sched_trace_task_release(task); |
| 603 | tsk_rt(task)->completed = 0; | 603 | } |
| 604 | } else { | 604 | else { |
| 605 | now = litmus_clock(); | 605 | if (task->rt.time_slice) { |
| 606 | if (is_tardy(task, now)) { | 606 | /* came back in time before deadline |
| 607 | /* new sporadic release */ | 607 | */ |
| 608 | release_at(task, now); | 608 | tsk_rt(task)->completed = 0; |
| 609 | sched_trace_task_release(task); | ||
| 610 | } | ||
| 611 | else { | ||
| 612 | if (task->rt.time_slice) { | ||
| 613 | /* came back in time before deadline | ||
| 614 | */ | ||
| 615 | tsk_rt(task)->completed = 0; | ||
| 616 | } | ||
| 617 | } | 609 | } |
| 618 | } | 610 | } |
| 619 | cedf_job_arrival(task); | 611 | cedf_job_arrival(task); |
diff --git a/litmus/sched_gsn_edf.c b/litmus/sched_gsn_edf.c index 990e4e1f86a9..b8548b885b35 100644 --- a/litmus/sched_gsn_edf.c +++ b/litmus/sched_gsn_edf.c | |||
| @@ -577,25 +577,17 @@ static void gsnedf_task_wake_up(struct task_struct *task) | |||
| 577 | TRACE_TASK(task, "wake_up at %llu\n", litmus_clock()); | 577 | TRACE_TASK(task, "wake_up at %llu\n", litmus_clock()); |
| 578 | 578 | ||
| 579 | raw_spin_lock_irqsave(&gsnedf_lock, flags); | 579 | raw_spin_lock_irqsave(&gsnedf_lock, flags); |
| 580 | /* We need to take suspensions because of semaphores into | 580 | now = litmus_clock(); |
| 581 | * account! If a job resumes after being suspended due to acquiring | 581 | if (is_tardy(task, now)) { |
| 582 | * a semaphore, it should never be treated as a new job release. | 582 | /* new sporadic release */ |
| 583 | */ | 583 | release_at(task, now); |
| 584 | if (get_rt_flags(task) == RT_F_EXIT_SEM) { | 584 | sched_trace_task_release(task); |
| 585 | tsk_rt(task)->completed = 0; | 585 | } |
| 586 | } else { | 586 | else { |
| 587 | now = litmus_clock(); | 587 | if (task->rt.time_slice) { |
| 588 | if (is_tardy(task, now)) { | 588 | /* came back in time before deadline |
| 589 | /* new sporadic release */ | 589 | */ |
| 590 | release_at(task, now); | 590 | tsk_rt(task)->completed = 0; |
| 591 | sched_trace_task_release(task); | ||
| 592 | } | ||
| 593 | else { | ||
| 594 | if (task->rt.time_slice) { | ||
| 595 | /* came back in time before deadline | ||
| 596 | */ | ||
| 597 | tsk_rt(task)->completed = 0; | ||
| 598 | } | ||
| 599 | } | 591 | } |
| 600 | } | 592 | } |
| 601 | gsnedf_job_arrival(task); | 593 | gsnedf_job_arrival(task); |
