On Sat 2019-04-13 09:28:03, Alastair D'Silva wrote:
> > -----Original Message-----
> > From: Petr Mladek <pmla...@suse.com>
> > Sent: Saturday, 13 April 2019 12:04 AM
> > To: Alastair D'Silva <alast...@au1.ibm.com>
> > Cc: alast...@d-silva.org; Jani Nikula <jani.nik...@linux.intel.com>;
> Joonas
> > Lahtinen <joonas.lahti...@linux.intel.com>; Rodrigo Vivi
> > <rodrigo.v...@intel.com>; David Airlie <airl...@linux.ie>; Daniel Vetter
> > <dan...@ffwll.ch>; Karsten Keil <i...@linux-pingi.de>; Jassi Brar
> > <jassisinghb...@gmail.com>; Tom Lendacky <thomas.lenda...@amd.com>;
> > David S. Miller <da...@davemloft.net>; Jose Abreu
> > <jose.ab...@synopsys.com>; Kalle Valo <kv...@codeaurora.org>;
> > Stanislaw Gruszka <sgrus...@redhat.com>; Benson Leung
> > <ble...@chromium.org>; Enric Balletbo i Serra
> > <enric.balle...@collabora.com>; James E.J. Bottomley
> > <j...@linux.ibm.com>; Martin K. Petersen <martin.peter...@oracle.com>;
> > Greg Kroah-Hartman <gre...@linuxfoundation.org>; Alexander Viro
> > <v...@zeniv.linux.org.uk>; Sergey Senozhatsky
> > <sergey.senozhat...@gmail.com>; Steven Rostedt <rost...@goodmis.org>;
> > Andrew Morton <a...@linux-foundation.org>; intel-
> > g...@lists.freedesktop.org; dri-de...@lists.freedesktop.org; linux-
> > ker...@vger.kernel.org; net...@vger.kernel.org;
> > ath...@lists.infradead.org; linux-wirel...@vger.kernel.org; linux-
> > s...@vger.kernel.org; linux-fb...@vger.kernel.org;
> > de...@driverdev.osuosl.org; linux-fsde...@vger.kernel.org
> > 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 <alast...@d-silva.org>
> > >
> > > 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/929244ed-cc7f-b0f3-b5ac-50e798e83...@linux.intel.com


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