softirq.c (bd2f55361f18347e890d52ff9cfd8895455ec11b) | softirq.c (ba74c1448f127649046615ec017bded7b2a76f29) |
---|---|
1/* 2 * linux/kernel/softirq.c 3 * 4 * Copyright (C) 1992 Linus Torvalds 5 * 6 * Distribute under GPLv2. 7 * 8 * Rewritten. Old one was good in 2.2, but in 2.3 it was immoral. --ANK (990903) --- 339 unchanged lines hidden (view full) --- 348 invoke_softirq(); 349 350#ifdef CONFIG_NO_HZ 351 /* Make sure that timer wheel updates are propagated */ 352 if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched()) 353 tick_nohz_irq_exit(); 354#endif 355 rcu_irq_exit(); | 1/* 2 * linux/kernel/softirq.c 3 * 4 * Copyright (C) 1992 Linus Torvalds 5 * 6 * Distribute under GPLv2. 7 * 8 * Rewritten. Old one was good in 2.2, but in 2.3 it was immoral. --ANK (990903) --- 339 unchanged lines hidden (view full) --- 348 invoke_softirq(); 349 350#ifdef CONFIG_NO_HZ 351 /* Make sure that timer wheel updates are propagated */ 352 if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched()) 353 tick_nohz_irq_exit(); 354#endif 355 rcu_irq_exit(); |
356 preempt_enable_no_resched(); | 356 sched_preempt_enable_no_resched(); |
357} 358 359/* 360 * This function must run with irqs disabled! 361 */ 362inline void raise_softirq_irqoff(unsigned int nr) 363{ 364 __raise_softirq_irqoff(nr); --- 389 unchanged lines hidden (view full) --- 754 If already offline, we'll be on wrong CPU: 755 don't process */ 756 if (cpu_is_offline((long)__bind_cpu)) 757 goto wait_to_die; 758 local_irq_disable(); 759 if (local_softirq_pending()) 760 __do_softirq(); 761 local_irq_enable(); | 357} 358 359/* 360 * This function must run with irqs disabled! 361 */ 362inline void raise_softirq_irqoff(unsigned int nr) 363{ 364 __raise_softirq_irqoff(nr); --- 389 unchanged lines hidden (view full) --- 754 If already offline, we'll be on wrong CPU: 755 don't process */ 756 if (cpu_is_offline((long)__bind_cpu)) 757 goto wait_to_die; 758 local_irq_disable(); 759 if (local_softirq_pending()) 760 __do_softirq(); 761 local_irq_enable(); |
762 preempt_enable_no_resched(); | 762 sched_preempt_enable_no_resched(); |
763 cond_resched(); 764 preempt_disable(); 765 rcu_note_context_switch((long)__bind_cpu); 766 } 767 preempt_enable(); 768 set_current_state(TASK_INTERRUPTIBLE); 769 } 770 __set_current_state(TASK_RUNNING); --- 161 unchanged lines hidden --- | 763 cond_resched(); 764 preempt_disable(); 765 rcu_note_context_switch((long)__bind_cpu); 766 } 767 preempt_enable(); 768 set_current_state(TASK_INTERRUPTIBLE); 769 } 770 __set_current_state(TASK_RUNNING); --- 161 unchanged lines hidden --- |