aboutsummaryrefslogtreecommitdiffstats
path: root/include
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 /include
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 'include')
-rw-r--r--include/litmus/locking.h3
-rw-r--r--include/litmus/rt_param.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/include/litmus/locking.h b/include/litmus/locking.h
index 296bbf6f7af0..4a5f198a0407 100644
--- a/include/litmus/locking.h
+++ b/include/litmus/locking.h
@@ -156,5 +156,8 @@ struct litmus_lock_ops {
156#endif 156#endif
157 157
158 158
159void suspend_for_lock(void);
160
161
159#endif 162#endif
160 163
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h
index 8b9e14c461dc..44f85a366574 100644
--- a/include/litmus/rt_param.h
+++ b/include/litmus/rt_param.h
@@ -288,6 +288,7 @@ struct rt_param {
288#ifdef CONFIG_REALTIME_AUX_TASKS 288#ifdef CONFIG_REALTIME_AUX_TASKS
289 unsigned int is_aux_task:1; 289 unsigned int is_aux_task:1;
290 unsigned int has_aux_tasks:1; 290 unsigned int has_aux_tasks:1;
291 unsigned int hide_from_aux_tasks:1;
291 292
292 struct list_head aux_task_node; 293 struct list_head aux_task_node;
293 struct binheap_node aux_task_owner_node; 294 struct binheap_node aux_task_owner_node;