diff options
author | Jonathan <hermanjl@bonham.cs.unc.edu> | 2011-04-16 02:16:09 -0400 |
---|---|---|
committer | Jonathan <hermanjl@bonham.cs.unc.edu> | 2011-04-16 02:16:09 -0400 |
commit | 72ea2410afcd60a78ca725b240010e4f7224ecea (patch) | |
tree | 026260529c03633f87cc3f73ec0ca9973aab9ae1 | |
parent | c368b47540077f0ef5703f7f48a653ca4997c944 (diff) |
progress
-rw-r--r-- | litmus/sched_edf_hsb.c | 15 |
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; |