From: Andrew Murray <amur...@mpcdata.com>

This patch adds timings information to printfs.
---
Changes for v2:
        - Add dedicated function to printf with timestamps
        - Fix compiler warnings
        - Remove code duplication within printf

Signed-off-by: Andrew Murray <amur...@theiet.org>
---
 common/console.c |   27 ++++++++++++++++++++++++---
 include/common.h |    2 ++
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/common/console.c b/common/console.c
index 8c650e0..63b84ba 100644
--- a/common/console.c
+++ b/common/console.c
@@ -365,24 +365,45 @@ void puts(const char *s)
        }
 }
 
-int printf(const char *fmt, ...)
+#if defined(CONFIG_BOOT_TRACE)
+int printf_boot_trace(const char *fmt, ...)
 {
        va_list args;
-       uint i;
+       uint i = 0;
        char printbuffer[CONFIG_SYS_PBSIZE];
+       char *buf = printbuffer;
 
+       unsigned long long ticks = get_ticks();
+       uint secs = ticks / get_tbclk();
+       uint msec = ((ticks * 1000000) / get_tbclk()) - (secs * 1000000);
+
+       i += sprintf(buf, "[%5u.%06u] ", secs, msec);
+       buf += i;
        va_start(args, fmt);
 
        /* For this to work, printbuffer must be larger than
         * anything we ever want to print.
         */
-       i = vsprintf(printbuffer, fmt, args);
+       i += vsprintf(buf, fmt, args);
        va_end(args);
 
        /* Print the string */
        puts(printbuffer);
        return i;
 }
+#endif
+
+int printf(const char *fmt, ...)
+{
+       va_list args;
+       uint i = 0;
+
+       va_start(args, fmt);
+       i = vprintf(fmt, args);
+       va_end(args);
+
+       return i;
+}
 
 int vprintf(const char *fmt, va_list args)
 {
diff --git a/include/common.h b/include/common.h
index a926430..16175b4 100644
--- a/include/common.h
+++ b/include/common.h
@@ -712,6 +712,8 @@ void        puts(const char *s);
 int    printf(const char *fmt, ...)
                __attribute__ ((format (__printf__, 1, 2)));
 int    vprintf(const char *fmt, va_list args);
+int    printf_boot_trace(const char *fmt, ...)
+               __attribute__ ((format (__printf__, 1, 2)));
 
 /* stderr */
 #define eputc(c)               fputc(stderr, c)
-- 
1.7.4.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to