diff options
author | Jeremy Erickson <jerickso@cs.unc.edu> | 2012-08-24 18:10:01 -0400 |
---|---|---|
committer | Jeremy Erickson <jerickso@cs.unc.edu> | 2012-08-24 18:10:01 -0400 |
commit | e35c1337da0f35dfe8fba2a42239842b7c0abb9e (patch) | |
tree | b83f394c9012b3b053af7cde5baaa415cf837ede | |
parent | 4e60b088dbcb91162f8ce27266bfe3a3ee281923 (diff) |
Fix problem with tasks exhausting budget while unlinked
-rw-r--r-- | litmus/budget.c | 7 |
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); |