Re: [PATCH] Remove argument from open_softirq which is always NULL

From: Carlos R. Mafra
Date: Fri May 16 2008 - 15:53:19 EST


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@xxxxxxxxxxxx>
> > 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@xxxxxxxxxxxxxxxxxx>

Thanks,
Carlos

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/