[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