aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Erickson <jerickso@cs.unc.edu>2012-08-24 18:10:01 -0400
committerJeremy Erickson <jerickso@cs.unc.edu>2012-08-24 18:10:01 -0400
commite35c1337da0f35dfe8fba2a42239842b7c0abb9e (patch)
treeb83f394c9012b3b053af7cde5baaa415cf837ede
parent4e60b088dbcb91162f8ce27266bfe3a3ee281923 (diff)
Fix problem with tasks exhausting budget while unlinked
-rw-r--r--litmus/budget.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/litmus/budget.c b/litmus/budget.c
index 310e9a3d4172..c3d0cb6c30a4 100644
--- a/litmus/budget.c
+++ b/litmus/budget.c
@@ -87,7 +87,12 @@ void update_enforcement_timer(struct task_struct* t)
87 if (t && budget_precisely_enforced(t)) { 87 if (t && budget_precisely_enforced(t)) {
88 /* Make sure we call into the scheduler when this budget 88 /* Make sure we call into the scheduler when this budget
89 * expires. */ 89 * expires. */
90 arm_enforcement_timer(et, t); 90 if (budget_exhausted(t)) {
91 on_enforcement_timeout(&et->timer);
92 }
93 else{
94 arm_enforcement_timer(et, t);
95 }
91 } else if (et->armed) { 96 } else if (et->armed) {
92 /* Make sure we don't cause unnecessary interrupts. */ 97 /* Make sure we don't cause unnecessary interrupts. */
93 cancel_enforcement_timer(et); 98 cancel_enforcement_timer(et);