[coreboot-gerrit] Patch set updated for coreboot: lib/hexdump: Refactor to skip lines with all ones as well
Alexandru Gagniuc (mr.nuke.me@gmail.com)
gerrit at coreboot.org
Sat Jan 9 08:19:47 CET 2016
Alexandru Gagniuc (mr.nuke.me at gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12872
-gerrit
commit 3e99978e07a529ea10657fa7473277579070b933
Author: Alexandru Gagniuc <alexandrux.gagniuc at 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 at 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");
}
}
More information about the coreboot-gerrit
mailing list