Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7 /kernel/softirq.c

Filename:/kernel/softirq.c
Lines Added:14
Lines Deleted:6
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3-git6  2.6.25-rc3-git5  2.6.25-rc3-git4 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25  2.6.25-git3  2.6.25-git4  2.6.25-git5 

Location
[  2.6.25-rc7
  [  kernel
     o  softirq.c

Patch

diff --git a/kernel/softirq.c b/kernel/softirq.c
index bd89bc4..31e9f2a 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -3,7 +3,9 @@
  *
  *   Copyright (C) 1992 Linus Torvalds
  *
- * Rewritten. Old one was good in 2.2, but in 2.3 it was immoral. --ANK (990903)
+ *   Distribute under GPLv2.
+ *
+ *   Rewritten. Old one was good in 2.2, but in 2.3 it was immoral. --ANK (990903)
  */
 
 #include <linux/module.h>
@@ -278,9 +280,14 @@ asmlinkage void do_softirq(void)
  */
 void irq_enter(void)
 {
+#ifdef CONFIG_NO_HZ
+   int cpu = smp_processor_id();
+   if (idle_cpu(cpu) && !in_interrupt())
+      tick_nohz_stop_idle(cpu);
+#endif
    __irq_enter();
 #ifdef CONFIG_NO_HZ
-   if (idle_cpu(smp_processor_id()))
+   if (idle_cpu(cpu))
       tick_nohz_update_jiffies();
 #endif
 }
@@ -306,6 +313,7 @@ void irq_exit(void)
    /* Make sure that timer wheel updates are propagated */
    if (!in_interrupt() && idle_cpu(smp_processor_id()) && !need_resched())
       tick_nohz_stop_sched_tick();
+   rcu_irq_exit();
 #endif
    preempt_enable_no_resched();
 }
@@ -313,7 +321,7 @@ void irq_exit(void)
 /*
  * This function must run with irqs disabled!
  */
-inline fastcall void raise_softirq_irqoff(unsigned int nr)
+inline void raise_softirq_irqoff(unsigned int nr)
 {
    __raise_softirq_irqoff(nr);
 
@@ -330,7 +338,7 @@ inline fastcall void raise_softirq_irqoff(unsigned int nr)
       wakeup_softirqd();
 }
 
-void fastcall raise_softirq(unsigned int nr)
+void raise_softirq(unsigned int nr)
 {
    unsigned long flags;
 
@@ -356,7 +364,7 @@ struct tasklet_head
 static DEFINE_PER_CPU(struct tasklet_head, tasklet_vec) = { NULL };
 static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec) = { NULL };
 
-void fastcall __tasklet_schedule(struct tasklet_struct *t)
+void __tasklet_schedule(struct tasklet_struct *t)
 {
    unsigned long flags;
 
@@ -369,7 +377,7 @@ void fastcall __tasklet_schedule(struct tasklet_struct *t)
 
 EXPORT_SYMBOL(__tasklet_schedule);
 
-void fastcall __tasklet_hi_schedule(struct tasklet_struct *t)
+void __tasklet_hi_schedule(struct tasklet_struct *t)
 {
    unsigned long flags;
 


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.