aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan <hermanjl@bonham.cs.unc.edu>2011-04-16 02:16:09 -0400
committerJonathan <hermanjl@bonham.cs.unc.edu>2011-04-16 02:16:09 -0400
commit72ea2410afcd60a78ca725b240010e4f7224ecea (patch)
tree026260529c03633f87cc3f73ec0ca9973aab9ae1
parentc368b47540077f0ef5703f7f48a653ca4997c944 (diff)
progress
-rw-r--r--litmus/sched_edf_hsb.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/litmus/sched_edf_hsb.c b/litmus/sched_edf_hsb.c
index 1e62bec32f2f..a1b1d9655b46 100644
--- a/litmus/sched_edf_hsb.c
+++ b/litmus/sched_edf_hsb.c
@@ -680,9 +680,7 @@ static noinline void unlink_server(cpu_entry_t *entry, int requeue)
680 680
681 /* Donator needs to absorb slack execution time */ 681 /* Donator needs to absorb slack execution time */
682 reclaim_slack(server); 682 reclaim_slack(server);
683 } else if (server->type != S_SRT && 683 } else if (server->type != S_SRT) {
684 (server->type == S_BE || !hrt_server->ready)) {
685
686 requeue_server(server); 684 requeue_server(server);
687 } 685 }
688 686
@@ -971,11 +969,16 @@ static struct task_struct* next_eligible_hrt(hrt_server_t *hrt_server)
971 TRACE_SERVER_SUB(&hrt_server->server, "now ready"); 969 TRACE_SERVER_SUB(&hrt_server->server, "now ready");
972 hrt_server->ready = 1; 970 hrt_server->ready = 1;
973 971
974 if (lt_before_eq(slack, now)) 972 slack = lt_subtract(hrt_server->server.deadline,
973 hrt_server->server.budget);
974
975 if (lt_before_eq(slack, now)) {
975 hrt_server->no_slack = 1; 976 hrt_server->no_slack = 1;
976 else 977 sched_trace_action(task, 3);
978 } else {
977 hrt_server->no_slack = 0; 979 hrt_server->no_slack = 0;
978 sched_trace_action(task, 2); /* Release */ 980 sched_trace_action(task, 2);
981 }
979 } else if (lt_before_eq(slack, now) && !hrt_server->no_slack) { 982 } else if (lt_before_eq(slack, now) && !hrt_server->no_slack) {
980 /* The server missed the shift to no slack */ 983 /* The server missed the shift to no slack */
981 hrt_server->no_slack = 1; 984 hrt_server->no_slack = 1;