diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2013-04-09 15:02:28 -0400 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2013-04-09 16:04:07 -0400 |
commit | 202a0410c911d9f9522d76db6405b0f6001aed5b (patch) | |
tree | 9f1372be13bfe6264e0bd8214e6a4153f59813fb /litmus/budget.c | |
parent | 63a043514200704c9f2f288075bf4e9b268f57bd (diff) |
IKGLP virtual unlock and MAJOR BUG FIX
Fixed a major bug where a scheduled task with
and exhausted budget does not recheck its priority
inheritance upon deadline postponement. Postponment
may enable priority inheritance relations, as the
priority of the lock holder decreases.
Diffstat (limited to 'litmus/budget.c')
-rw-r--r-- | litmus/budget.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/litmus/budget.c b/litmus/budget.c index aa254349a85e..f7d690c77226 100644 --- a/litmus/budget.c +++ b/litmus/budget.c | |||
@@ -183,7 +183,8 @@ void sobliv_on_blocked(struct task_struct* t) | |||
183 | * trigger another exhaustion signal since signals are controled by | 183 | * trigger another exhaustion signal since signals are controled by |
184 | * BTF_SIG_BUDGET_SENT. */ | 184 | * BTF_SIG_BUDGET_SENT. */ |
185 | int exhausted = bt_flag_test_and_clear(t, BTF_BUDGET_EXHAUSTED); | 185 | int exhausted = bt_flag_test_and_clear(t, BTF_BUDGET_EXHAUSTED); |
186 | BUG_ON(!exhausted); | 186 | //BUG_ON(!exhausted); |
187 | WARN_ON(!exhausted); | ||
187 | 188 | ||
188 | TRACE_TASK(t, "budget timer not armed. " | 189 | TRACE_TASK(t, "budget timer not armed. " |
189 | "Raced with exhaustion-resched? Re-arming.\n"); | 190 | "Raced with exhaustion-resched? Re-arming.\n"); |
@@ -317,12 +318,6 @@ void sobliv_revaluate_task(struct task_struct* t) | |||
317 | "on Litmus lock without " | 318 | "on Litmus lock without " |
318 | "CONFIG_LITMUS_NESTED_LOCKING enabled.\n"); | 319 | "CONFIG_LITMUS_NESTED_LOCKING enabled.\n"); |
319 | #endif | 320 | #endif |
320 | |||
321 | /* Move a waiter onto a FIFO queue to simulate an unlock call. */ | ||
322 | if (tsk_rt(t)->outermost_lock && | ||
323 | tsk_rt(t)->outermost_lock->ops->is_omlp_family) { | ||
324 | tsk_rt(t)->outermost_lock->ops->omlp_virtual_unlock(tsk_rt(t)->outermost_lock, t); | ||
325 | } | ||
326 | } | 321 | } |
327 | 322 | ||
328 | 323 | ||