Re: [RFC][PATCH] printk: Add %pb to print bitmaps

From: Ingo Molnar
Date: Wed May 09 2012 - 13:22:22 EST



* Joe Perches <joe@xxxxxxxxxxx> wrote:

> On Wed, 2012-05-09 at 18:06 +0200, Peter Zijlstra wrote:
> > On Wed, 2012-05-09 at 17:41 +0200, Ingo Molnar wrote:
> > > * Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> > >
> > > > On Wed, 2012-05-09 at 16:15 +0200, Ingo Molnar wrote:
> > > > > > I guess I should use %.*pb and keep the field_width in case someone
> > > > > > manages to actually make bitmap_scnlistprintf() conform to it. The
> > > > > > precision is unused anyway.
> > > > >
> > > > > That's a cute trick, and it's intuitive as well.
> > > >
> > > > kernel/sched/core.c:5570:3: warning: precision used with â%pâ gnu_printf format [-Wformat]
> > > >
> > > > /me curses a bit.. anybody?
> > >
> > > Yeah, that's a floating point precision thing (or for strings,
> > > right-align) - could you use %30pb, etc?
> >
> > %*pb you mean? Yeah that works, field width is allowed for %p. It does
> > mean we cannot ever make bitmaps respect field width though.
>
> You could also fill a new struct with info
> about the bitmap and pass a pointer to that.
>
> struct print_bitmap_info {
> int foo;
> int precision;
> int width;
> void *bitmap;
> };
> ...
> struct print_bitmap_info bi;
> bi.foo = bar;
> ...
> bi.bitmap = &bitmap;
> ...
> printk("%pb", &bi);

That defeats the whole purpose of avoiding extra complexity and
preparation - just passing in the bitmap pointer is the most
natural, most intuitive type to use.

Thanks,

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