提交 962cf36c 编写于 作者: C Carlos R. Mafra 提交者: Thomas Gleixner

Remove argument from open_softirq which is always NULL

As git-grep shows, open_softirq() is always called with the last argument
being NULL

block/blk-core.c:       open_softirq(BLOCK_SOFTIRQ, blk_done_softirq, NULL);
kernel/hrtimer.c:       open_softirq(HRTIMER_SOFTIRQ, run_hrtimer_softirq, NULL);
kernel/rcuclassic.c:    open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);
kernel/rcupreempt.c:    open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL);
kernel/sched.c: open_softirq(SCHED_SOFTIRQ, run_rebalance_domains, NULL);
kernel/softirq.c:       open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);
kernel/softirq.c:       open_softirq(HI_SOFTIRQ, tasklet_hi_action, NULL);
kernel/timer.c: open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL);
net/core/dev.c: open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL);
net/core/dev.c: open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL);

This observation has already been made by Matthew Wilcox in June 2002
(http://www.cs.helsinki.fi/linux/linux-kernel/2002-25/0687.html)

"I notice that none of the current softirq routines use the data element
passed to them."

and the situation hasn't changed since them. So it appears we can safely
remove that extra argument to save 128 (54) bytes of kernel data (text).
Signed-off-by: NCarlos R. Mafra <crmafra@ift.unesp.br>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
上级 75d3bce2
...@@ -2048,7 +2048,7 @@ int __init blk_dev_init(void) ...@@ -2048,7 +2048,7 @@ int __init blk_dev_init(void)
for_each_possible_cpu(i) for_each_possible_cpu(i)
INIT_LIST_HEAD(&per_cpu(blk_cpu_done, i)); INIT_LIST_HEAD(&per_cpu(blk_cpu_done, i));
open_softirq(BLOCK_SOFTIRQ, blk_done_softirq, NULL); open_softirq(BLOCK_SOFTIRQ, blk_done_softirq);
register_hotcpu_notifier(&blk_cpu_notifier); register_hotcpu_notifier(&blk_cpu_notifier);
return 0; return 0;
......
...@@ -285,12 +285,11 @@ enum ...@@ -285,12 +285,11 @@ enum
struct softirq_action struct softirq_action
{ {
void (*action)(struct softirq_action *); void (*action)(struct softirq_action *);
void *data;
}; };
asmlinkage void do_softirq(void); asmlinkage void do_softirq(void);
asmlinkage void __do_softirq(void); asmlinkage void __do_softirq(void);
extern void open_softirq(int nr, void (*action)(struct softirq_action*), void *data); extern void open_softirq(int nr, void (*action)(struct softirq_action *));
extern void softirq_init(void); extern void softirq_init(void);
#define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0) #define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq_irqoff(unsigned int nr);
......
...@@ -1669,7 +1669,7 @@ void __init hrtimers_init(void) ...@@ -1669,7 +1669,7 @@ void __init hrtimers_init(void)
(void *)(long)smp_processor_id()); (void *)(long)smp_processor_id());
register_cpu_notifier(&hrtimers_nb); register_cpu_notifier(&hrtimers_nb);
#ifdef CONFIG_HIGH_RES_TIMERS #ifdef CONFIG_HIGH_RES_TIMERS
open_softirq(HRTIMER_SOFTIRQ, run_hrtimer_softirq, NULL); open_softirq(HRTIMER_SOFTIRQ, run_hrtimer_softirq);
#endif #endif
} }
...@@ -529,7 +529,7 @@ static void __cpuinit rcu_online_cpu(int cpu) ...@@ -529,7 +529,7 @@ static void __cpuinit rcu_online_cpu(int cpu)
rcu_init_percpu_data(cpu, &rcu_ctrlblk, rdp); rcu_init_percpu_data(cpu, &rcu_ctrlblk, rdp);
rcu_init_percpu_data(cpu, &rcu_bh_ctrlblk, bh_rdp); rcu_init_percpu_data(cpu, &rcu_bh_ctrlblk, bh_rdp);
open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL); open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
} }
static int __cpuinit rcu_cpu_notify(struct notifier_block *self, static int __cpuinit rcu_cpu_notify(struct notifier_block *self,
......
...@@ -1125,7 +1125,7 @@ void __init __rcu_init(void) ...@@ -1125,7 +1125,7 @@ void __init __rcu_init(void)
for_each_online_cpu(cpu) for_each_online_cpu(cpu)
rcu_cpu_notify(&rcu_nb, CPU_UP_PREPARE, (void *)(long) cpu); rcu_cpu_notify(&rcu_nb, CPU_UP_PREPARE, (void *)(long) cpu);
open_softirq(RCU_SOFTIRQ, rcu_process_callbacks, NULL); open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
} }
/* /*
......
...@@ -8154,7 +8154,7 @@ void __init sched_init(void) ...@@ -8154,7 +8154,7 @@ void __init sched_init(void)
#endif #endif
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
open_softirq(SCHED_SOFTIRQ, run_rebalance_domains, NULL); open_softirq(SCHED_SOFTIRQ, run_rebalance_domains);
#endif #endif
#ifdef CONFIG_RT_MUTEXES #ifdef CONFIG_RT_MUTEXES
......
...@@ -347,9 +347,8 @@ void raise_softirq(unsigned int nr) ...@@ -347,9 +347,8 @@ void raise_softirq(unsigned int nr)
local_irq_restore(flags); local_irq_restore(flags);
} }
void open_softirq(int nr, void (*action)(struct softirq_action*), void *data) void open_softirq(int nr, void (*action)(struct softirq_action *))
{ {
softirq_vec[nr].data = data;
softirq_vec[nr].action = action; softirq_vec[nr].action = action;
} }
...@@ -503,8 +502,8 @@ void __init softirq_init(void) ...@@ -503,8 +502,8 @@ void __init softirq_init(void)
&per_cpu(tasklet_hi_vec, cpu).head; &per_cpu(tasklet_hi_vec, cpu).head;
} }
open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL); open_softirq(TASKLET_SOFTIRQ, tasklet_action);
open_softirq(HI_SOFTIRQ, tasklet_hi_action, NULL); open_softirq(HI_SOFTIRQ, tasklet_hi_action);
} }
static int ksoftirqd(void * __bind_cpu) static int ksoftirqd(void * __bind_cpu)
......
...@@ -1502,7 +1502,7 @@ void __init init_timers(void) ...@@ -1502,7 +1502,7 @@ void __init init_timers(void)
BUG_ON(err == NOTIFY_BAD); BUG_ON(err == NOTIFY_BAD);
register_cpu_notifier(&timers_nb); register_cpu_notifier(&timers_nb);
open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL); open_softirq(TIMER_SOFTIRQ, run_timer_softirq);
} }
/** /**
......
...@@ -4563,8 +4563,8 @@ static int __init net_dev_init(void) ...@@ -4563,8 +4563,8 @@ static int __init net_dev_init(void)
dev_boot_phase = 0; dev_boot_phase = 0;
open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL); open_softirq(NET_TX_SOFTIRQ, net_tx_action);
open_softirq(NET_RX_SOFTIRQ, net_rx_action, NULL); open_softirq(NET_RX_SOFTIRQ, net_rx_action);
hotcpu_notifier(dev_cpu_callback, 0); hotcpu_notifier(dev_cpu_callback, 0);
dst_init(); dst_init();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册