[U-Boot-Users] [PATCH] Allow print_size to print in GB

Becky Bruce becky.bruce at freescale.com
Wed Jul 9 18:09:41 CEST 2008


Signed-off-by: Becky Bruce <becky.bruce at freescale.com>
---
This patch supersedes Stefan's recent patch to allow the printing of thousands
of MB.  We use GB instead.

-Becky

 lib_generic/display_options.c |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/lib_generic/display_options.c b/lib_generic/display_options.c
index a52fa04..2dc2567 100644
--- a/lib_generic/display_options.c
+++ b/lib_generic/display_options.c
@@ -39,27 +39,35 @@ int display_options (void)
 }
 
 /*
- * print sizes as "xxx kB", "xxx.y kB", "xxx MB" or "xxx.y MB" as needed;
- * allow for optional trailing string (like "\n")
+ * print sizes as "xxx kB", "xxx.y kB", "xxx MB", "xxx.y MB",
+ * xxx GB, or xxx.y GB as needed; allow for optional trailing string
+ * (like "\n")
  */
 void print_size (phys_size_t size, const char *s)
 {
-	ulong m, n;
-	ulong d = 1 << 20;		/* 1 MB */
-	char  c = 'M';
-
-	if (size < d) {			/* print in kB */
-		c = 'k';
-		d = 1 << 10;
+	ulong m = 0, n;
+	phys_size_t d = 1 << 30;		/* 1 GB */
+	char  c = 'G';
+
+	if (size < d) {			/* try MB */
+		c = 'M';
+		d = 1 << 20;
+		if (size < d) {		/* print in kB */
+			c = 'k';
+			d = 1 << 10;
+		}
 	}
 
 	n = size / d;
 
-	m = (10 * (size - (n * d)) + (d / 2) ) / d;
+	/* If there's a remainder, deal with it */
+	if(size % d) {
+		m = (10 * (size - (n * d)) + (d / 2) ) / d;
 
-	if (m >= 10) {
-		m -= 10;
-		n += 1;
+		if (m >= 10) {
+			m -= 10;
+			n += 1;
+		}
 	}
 
 	printf ("%2ld", n);
-- 
1.5.4.1





More information about the U-Boot mailing list