On Sat 2019-04-13 09:28:03, Alastair D'Silva wrote:
> > -----Original Message-----
> > From: Petr Mladek <[email protected]>
> > Sent: Saturday, 13 April 2019 12:04 AM
> > To: Alastair D'Silva <[email protected]>
> > Cc: [email protected]; Jani Nikula <[email protected]>;
> Joonas
> > Lahtinen <[email protected]>; Rodrigo Vivi
> > <[email protected]>; David Airlie <[email protected]>; Daniel Vetter
> > <[email protected]>; Karsten Keil <[email protected]>; Jassi Brar
> > <[email protected]>; Tom Lendacky <[email protected]>;
> > David S. Miller <[email protected]>; Jose Abreu
> > <[email protected]>; Kalle Valo <[email protected]>;
> > Stanislaw Gruszka <[email protected]>; Benson Leung
> > <[email protected]>; Enric Balletbo i Serra
> > <[email protected]>; James E.J. Bottomley
> > <[email protected]>; Martin K. Petersen <[email protected]>;
> > Greg Kroah-Hartman <[email protected]>; Alexander Viro
> > <[email protected]>; Sergey Senozhatsky
> > <[email protected]>; Steven Rostedt <[email protected]>;
> > Andrew Morton <[email protected]>; intel-
> > [email protected]; [email protected]; linux-
> > [email protected]; [email protected];
> > [email protected]; [email protected]; linux-
> > [email protected]; [email protected];
> > [email protected]; [email protected]
> > Subject: Re: [PATCH 2/4] lib/hexdump.c: Optionally suppress lines of
> filler
> > bytes
> > 
> > On Wed 2019-04-10 13:17:18, Alastair D'Silva wrote:
> > > From: Alastair D'Silva <[email protected]>
> > >
> > > Some buffers may only be partially filled with useful data, while the
> > > rest is padded (typically with 0x00 or 0xff).
> > >
> > > This patch introduces flags which allow lines of padding bytes to be
> > > suppressed, making the output easier to interpret:
> > > HEXDUMP_SUPPRESS_0X00, HEXDUMP_SUPPRESS_0XFF
> > >
> > > The first and last lines are not suppressed by default, so the
> > > function always outputs something. This behaviour can be further
> > > controlled with the HEXDUMP_SUPPRESS_FIRST &
> > HEXDUMP_SUPPRESS_LAST flags.
> > >
> > > An inline wrapper function is provided for backwards compatibility
> > > with existing code, which maintains the original behaviour.
> > >
> > 
> > > diff --git a/lib/hexdump.c b/lib/hexdump.c index
> > > b8a164814744..2f3bafb55a44 100644
> > > --- a/lib/hexdump.c
> > > +++ b/lib/hexdump.c
> > > +void print_hex_dump_ext(const char *level, const char *prefix_str,
> > > +                 int prefix_type, int rowsize, int groupsize,
> > > +                 const void *buf, size_t len, u64 flags)
> > >  {
> > >   const u8 *ptr = buf;
> > > - int i, linelen, remaining = len;
> > > + int i, remaining = len;
> > >   unsigned char linebuf[64 * 3 + 2 + 64 + 1];
> > > + bool first_line = true;
> > >
> > >   if (rowsize != 16 && rowsize != 32 && rowsize != 64)
> > >           rowsize = 16;
> > >
> > >   for (i = 0; i < len; i += rowsize) {
> > > -         linelen = min(remaining, rowsize);
> > > +         bool skip = false;
> > > +         int linelen = min(remaining, rowsize);
> > > +
> > >           remaining -= rowsize;
> > >
> > > +         if (flags & HEXDUMP_SUPPRESS_0X00)
> > > +                 skip = buf_is_all(ptr + i, linelen, 0x00);
> > > +
> > > +         if (!skip && (flags & HEXDUMP_SUPPRESS_0XFF))
> > > +                 skip = buf_is_all(ptr + i, linelen, 0xff);
> > > +
> > > +         if (first_line && !(flags & HEXDUMP_SUPPRESS_FIRST))
> > > +                 skip = false;
> > > +
> > > +         if (remaining <= 0 && !(flags & HEXDUMP_SUPPRESS_LAST))
> > > +                 skip = false;
> > > +
> > > +         if (skip)
> > > +                 continue;
> > 
> > IMHO, quietly skipping lines could cause a lot of confusion, espcially
> when the address is not printed.
> >
> It's up to the caller to decide how they want it displayed.

I wonder who would want to quietly skip some data values.
Are you using it yourself? Could you please provide an
example?

I do not see why we would need to complicate the API and code
by this.

The behavior proposed by Tvrtko Ursulin makes much more
sense. I mean
https://lkml.kernel.org/r/[email protected]


> > I wonder how it would look like when we print something like:
> > 
> >     --- skipped XX lines full of 0x00 ---
> 
> This could be added as a later enhancement, with a new flag (eg.
> HEXDUMP_SUPPRESS_VERBOSE).

Who will add this later? Frankly, this looks like a half baked
feature that it good enough for you. If you want it upstream,
it must behave reasonably and it must be worth it.

Best Regards,
Petr

Reply via email to