Alexandru Gagniuc (mr.nuke.me@gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12872
-gerrit
commit 3b1bb69102346eacf05770eb20ee96601d718487 Author: Alexandru Gagniuc alexandrux.gagniuc@intel.com Date: Wed Oct 14 09:56:28 2015 -0700
lib/hexdump: Refactor to skip lines with all ones as well
We already do this for lines with all zeroes, so it makes sense to treat all ones the same, for symmetry.
Change-Id: I4b637b07a49e0c649331aa200995b474dd9a2682 Signed-off-by: Alexandru Gagniuc alexandrux.gagniuc@intel.com --- src/lib/hexdump.c | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-)
diff --git a/src/lib/hexdump.c b/src/lib/hexdump.c index 7907a38..0715a5f 100644 --- a/src/lib/hexdump.c +++ b/src/lib/hexdump.c @@ -23,39 +23,40 @@ static int isprint(int c) void hexdump(const void *memory, size_t length) { int i; - uint8_t *m; + uint8_t *line; int all_zero = 0; - - m = (uint8_t *) memory; + int all_one = 0;
for (i = 0; i < length; i += 16) { int j; - int left = MIN(length - i, 16); + line = ((uint8_t *)memory) + i; + + all_zero++; + all_one++; + for (j = 0; j < 16; j++) { + if (line[j] != 0) { + all_zero = 0; + break; + } + }
- if (left < 16) { - all_zero = 0; - } else { - all_zero++; - for (j = 0; j < 16; j++) { - if (m[i + j] != 0) { - all_zero = 0; - break; - } + for (j = 0; j < 16; j++) { + if (line[j] != 0xff) { + all_one = 0; + break; } }
- if (all_zero < 2) { + if ((all_zero < 2) && (all_one < 2)) { printk(BIOS_DEBUG, "%p:", memory + i); - for (j = 0; j < left; j++) - printk(BIOS_DEBUG, " %02x", m[i + j]); - for (j = left; j < 16; j++) - printk(BIOS_DEBUG, " "); + for (j = 0; j < 16; j++) + printk(BIOS_DEBUG, " %02x", line[j]); printk(BIOS_DEBUG, " "); - for (j = 0; j < left; j++) + for (j = 0; j < 16; j++) printk(BIOS_DEBUG, "%c", - isprint(m[i + j]) ? m[i + j] : '.'); + isprint(line[j]) ? line[j] : '.'); printk(BIOS_DEBUG, "\n"); - } else if (all_zero == 2) { + } else if ((all_zero == 2) || (all_one == 2)) { printk(BIOS_DEBUG, "...\n"); } }