summaryrefslogtreecommitdiff
path: root/kernel/sched
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-07-26 19:39:56 +0200
committerDaniel Wagner <wagi@monom.org>2018-07-26 06:43:40 +0200
commit5ce5a1b7842aca286b8b67f90d7b941a20d79e6e (patch)
treee8199d18be80bd8b67892b9a380c42b9cc551c12 /kernel/sched
parent820b95fde0e124d5d5f2e6b83f4b5cad71acda2e (diff)
downloadlinux-rt-5ce5a1b7842aca286b8b67f90d7b941a20d79e6e.tar.gz
rt: Add the preempt-rt lock replacement APIs
Map spinlocks, rwlocks, rw_semaphores and semaphores to the rt_mutex based locking functions for preempt-rt. This also introduces RT's sleeping locks. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/core.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 8bfaefc437ec..c20065ecf6cd 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -547,7 +547,7 @@ void wake_q_add(struct wake_q_head *head, struct task_struct *task)
head->lastp = &node->next;
}
-void wake_up_q(struct wake_q_head *head)
+void __wake_up_q(struct wake_q_head *head, bool sleeper)
{
struct wake_q_node *node = head->first;
@@ -564,7 +564,10 @@ void wake_up_q(struct wake_q_head *head)
* wake_up_process() implies a wmb() to pair with the queueing
* in wake_q_add() so as not to miss wakeups.
*/
- wake_up_process(task);
+ if (sleeper)
+ wake_up_lock_sleeper(task);
+ else
+ wake_up_process(task);
put_task_struct(task);
}
}