diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-09-17 19:31:04 -0400 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-09-17 19:31:04 -0400 |
commit | ba54b1096870fba6e3bbb99aafc713e76b747353 (patch) | |
tree | 26727a7f89ca520392fec0b559f09500cb9934ac /litmus/rsm_lock.c | |
parent | ef0974bf8e768b38d728f3bba147332ddea1e11b (diff) |
Fixed three bugs with aux threads and nested locks
Fixes two bugs with nested locks:
1) List of aux threads could become corrupted.
-- moved modifications to be within scheduler lock.
2) Fixed bad EDF comparison ordering that could lead
to schedule thrashing in an infinite loop.
3) Prevent aux threads from inheriting a priority from
a task that is blocked on a real-time litmus lock.
(since the aux threads can't possibly hold these locks,
we don't have to worry about inheritance.)
Diffstat (limited to 'litmus/rsm_lock.c')
-rw-r--r-- | litmus/rsm_lock.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/litmus/rsm_lock.c b/litmus/rsm_lock.c index 75ed87c5ed48..3dfd8ae9d221 100644 --- a/litmus/rsm_lock.c +++ b/litmus/rsm_lock.c | |||
@@ -289,7 +289,7 @@ int rsm_mutex_lock(struct litmus_lock* l) | |||
289 | * there is only one wake up per release. | 289 | * there is only one wake up per release. |
290 | */ | 290 | */ |
291 | 291 | ||
292 | schedule(); | 292 | suspend_for_lock(); |
293 | 293 | ||
294 | TS_LOCK_RESUME; | 294 | TS_LOCK_RESUME; |
295 | 295 | ||