From ba54b1096870fba6e3bbb99aafc713e76b747353 Mon Sep 17 00:00:00 2001 From: Glenn Elliott Date: Mon, 17 Sep 2012 19:31:04 -0400 Subject: 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.) --- include/litmus/locking.h | 3 +++ include/litmus/rt_param.h | 1 + 2 files changed, 4 insertions(+) (limited to 'include') 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 { #endif +void suspend_for_lock(void); + + #endif 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 { #ifdef CONFIG_REALTIME_AUX_TASKS unsigned int is_aux_task:1; unsigned int has_aux_tasks:1; + unsigned int hide_from_aux_tasks:1; struct list_head aux_task_node; struct binheap_node aux_task_owner_node; -- cgit v1.2.2