Messages in this thread | | | Date | Fri, 16 May 2008 16:52:23 -0300 | From | "Carlos R. Mafra" <> | Subject | Re: [PATCH] Remove argument from open_softirq which is always NULL |
| |
On Fri 16.May'08 at 11:28:07 -0700, Paul E. McKenney wrote: > On Thu, May 15, 2008 at 11:15:37AM -0300, Carlos R. Mafra wrote: > > From 9371c45e92c308425c0aad4794f61acb6fe6d140 Mon Sep 17 00:00:00 2001 > > From: Carlos R. Mafra <crmafra@ift.unesp.br> > > Date: Wed, 14 May 2008 18:26:06 -0300 > > Subject: [PATCH] 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). > > Good stuff!!!
Thanks a lot!
> Will there also be a similar set of patches that removes the extra > argument from the invoked function? For example: > > static void rcu_process_callbacks(struct softirq_action *unused) > > could now become: > > static void rcu_process_callbacks(void)
That was my intention at first when I came acroos run_hrtimer_softirq(struct softirq_action *h) in hrtimer.c, which then led me to read more code and notice that I could do the cleanup in this patch.
You've just gave me the motivation I needed to keep cleaning (and learning) further, as the original bug which motivated me to look at those things does not happen anymore in my laptop :-)
I will try to do another patch soon, but I will travel tomorrow so it may take a few days.
> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Thanks, Carlos
| |