summaryrefslogtreecommitdiff
path: root/kernel/softirq.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-07-28 14:31:31 +0200
committerThomas Gleixner <tglx@linutronix.de>2009-07-28 14:31:31 +0200
commit54b371e002ee69a47e051e02702bf4eb1a360bab (patch)
tree123385fd61821a1bf918697b6ef92cb4359a6b1f /kernel/softirq.c
parentb49f8d26493ee0c1f016115ad25912571c284411 (diff)
parentf9d9cfe4fa444b93238d7c3cf07af2dd85b151e8 (diff)
downloadlwn-54b371e002ee69a47e051e02702bf4eb1a360bab.tar.gz
lwn-54b371e002ee69a47e051e02702bf4eb1a360bab.zip
Merge branch 'rt/core' into rt/base
Conflicts: kernel/spinlock.c lib/kernel_lock.c Manual fixup of kernel/rwlocks.c Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r--kernel/softirq.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c
index eb5e131a0485..5fc1b0eefe9b 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -67,7 +67,7 @@ char *softirq_to_name[NR_SOFTIRQS] = {
* to the pending events, so lets the scheduler to balance
* the softirq load for us.
*/
-void wakeup_softirqd(void)
+static void wakeup_softirqd(void)
{
/* Interrupts are disabled: no need to stop preemption */
struct task_struct *tsk = __get_cpu_var(ksoftirqd);
@@ -308,7 +308,7 @@ void irq_exit(void)
if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched())
tick_nohz_stop_sched_tick(0);
#endif
- preempt_enable_no_resched();
+ __preempt_enable_no_resched();
}
/*
@@ -704,8 +704,7 @@ static int ksoftirqd(void * __bind_cpu)
while (!kthread_should_stop()) {
preempt_disable();
if (!local_softirq_pending()) {
- preempt_enable_no_resched();
- schedule();
+ preempt_enable_and_schedule();
preempt_disable();
}
@@ -718,7 +717,7 @@ static int ksoftirqd(void * __bind_cpu)
if (cpu_is_offline((long)__bind_cpu))
goto wait_to_die;
do_softirq();
- preempt_enable_no_resched();
+ __preempt_enable_no_resched();
cond_resched();
preempt_disable();
rcu_qsctr_inc((long)__bind_cpu);