[coreboot-gerrit] Patch set updated for coreboot: 1a39973 Don't output trailing garbage for cbmemc

Vladimir Serbinenko (phcoder@gmail.com) gerrit at coreboot.org
Sat Mar 30 13:08:32 CET 2013


Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2991

-gerrit

commit 1a399731c7dfe35d7e2665e251850e3e5cd6bd7d
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date:   Sat Mar 30 12:15:12 2013 +0100

    Don't output trailing garbage for cbmemc
    
    Change-Id: I68c1970cf84d49b2d7d6007dae0679d7a7a0cb99
    Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
 util/cbmem/cbmem.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/util/cbmem/cbmem.c b/util/cbmem/cbmem.c
index bc6bd6b..f47db1d 100644
--- a/util/cbmem/cbmem.c
+++ b/util/cbmem/cbmem.c
@@ -308,12 +308,21 @@ static void dump_timestamps(void)
 	unmap_memory();
 }
 
+static const char *future_ngettext (const char *sing, const char *plural,
+	unsigned long int n)
+{
+	if (n == 1)
+		return sing;
+	return plural;
+}
+
 /* dump the cbmem console */
 static void dump_console(void)
 {
 	void *console_p;
 	char *console_c;
 	uint32_t size;
+	uint32_t cursor;
 
 	if (console.tag != LB_TAG_CBMEM_CONSOLE) {
 		fprintf(stderr, "No console found in coreboot table.\n");
@@ -328,6 +337,12 @@ static void dump_console(void)
 	 * Hence we have to add 8 to get to the actual console string.
 	 */
 	size = *(uint32_t *)console_p;
+	cursor = *(uint32_t *) (console_p + 4);
+	/* Cursor continues to go on even after no more data fits in
+	   the buffer but the data is dropped in this case.
+	 */
+	if (size > cursor)
+		size = cursor;
 	console_c = malloc(size + 1);
 	if (!console_c) {
 		fprintf(stderr, "Not enough memory for console.\n");
@@ -337,7 +352,12 @@ static void dump_console(void)
 	memcpy(console_c, console_p + 8, size);
 	console_c[size] = 0;
 
-	printf("%s", console_c);
+	printf("%s\n", console_c);
+	if (size < cursor)
+		/* Make it easy to use ng*/
+		printf (future_ngettext ("1 byte lost\n" :
+					 "%d bytes lost\n", cursor - size),
+			cursor - size);
 
 	free(console_c);
 



More information about the coreboot-gerrit mailing list