aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/rsm_lock.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-09-17 19:31:04 -0400
committerGlenn Elliott <gelliott@cs.unc.edu>2012-09-17 19:31:04 -0400
commitba54b1096870fba6e3bbb99aafc713e76b747353 (patch)
tree26727a7f89ca520392fec0b559f09500cb9934ac /litmus/rsm_lock.c
parentef0974bf8e768b38d728f3bba147332ddea1e11b (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.c2
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