Re: [RFC PATCH 3/5] tracing/events: modify irq print to new format

From: Steven Rostedt
Date: Wed Jun 10 2009 - 08:23:36 EST



On Wed, 10 Jun 2009, Christoph Hellwig wrote:

> On Mon, Jun 08, 2009 at 09:45:37PM -0400, Steven Rostedt wrote:
> > -#define softirq_name(sirq) { sirq##_SOFTIRQ, #sirq }
> > -#define show_softirq_name(val) \
> > - __print_symbolic(val, \
> > - softirq_name(HI), \
> > - softirq_name(TIMER), \
> > - softirq_name(NET_TX), \
> > - softirq_name(NET_RX), \
> > - softirq_name(BLOCK), \
> > - softirq_name(TASKLET), \
> > - softirq_name(SCHED), \
> > - softirq_name(HRTIMER), \
> > - softirq_name(RCU))
> > +#define softirq_name(sirq) sirq##_SOFTIRQ, #sirq
> > +#define show_softirq_name(val) \
> > + "%d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s>", \
> > + softirq_name(HI), \
> > + softirq_name(TIMER), \
> > + softirq_name(NET_TX), \
> > + softirq_name(NET_RX), \
> > + softirq_name(BLOCK), \
> > + softirq_name(TASKLET), \
> > + softirq_name(SCHED), \
> > + softirq_name(HRTIMER), \
> > + softirq_name(RCU)
>
> This is a massive readability and maintainabilit regression over the
> old code. I now need to add a useless and counter-intuitive %d=%s,
> boilerplate for every new flag I add instead ofa simple line-line
> array entry.
>
> Also why does show_softirq_name get a val argument passed that's never
> used? And no, I don't think

That was from the original, I forgot to remove it.

> %d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s,%d=%s is an intuitive
> way to print an enum.

This is a helper macro and has nothing to do with the new format. In fact,
I'd do something similar with the old format because currently without
that "%d=%s,..." helper we get in the print format:

HRTIMER_SOFTIRQ = "HRTIMER"

How is a user tool going to know what value HRTIMER_SOFTIRQ is?

This was a trick I used to evaluate the HRTIMER_SOFTIRQ to an actual
number that might actually be useful for userland readers.

-- Steve

--
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/