From 2d7e82823dc28ccfa776dc0ecdaeeda8c465bf62 Mon Sep 17 00:00:00 2001 From: Soby Mathew Date: Mon, 4 Sep 2017 11:45:52 +0100 Subject: [PATCH] Introduce tf_vprintf() and tf_string_print() This patch introduces tf_vprintf() and tf_string_print() APIs which is needed by the logging framework introduced in a later patch. Change-Id: Ie4240443d0e04e070502b51e371e546dd469fd33 Signed-off-by: Soby Mathew --- common/tf_printf.c | 25 ++++++++++++++++--------- include/common/debug.h | 3 +++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/common/tf_printf.c b/common/tf_printf.c index c18e2f990..f73842acd 100644 --- a/common/tf_printf.c +++ b/common/tf_printf.c @@ -23,8 +23,10 @@ (((lcount) > 1) ? va_arg(args, unsigned long long int) : \ ((lcount) ? va_arg(args, unsigned long int) : va_arg(args, unsigned int))) -static void string_print(const char *str) +void tf_string_print(const char *str) { + assert(str); + while (*str) putchar(*str++); } @@ -64,15 +66,13 @@ static void unsigned_num_print(unsigned long long int unum, unsigned int radix) * The print exits on all other formats specifiers other than valid * combinations of the above specifiers. *******************************************************************/ -void tf_printf(const char *fmt, ...) +void tf_vprintf(const char *fmt, va_list args) { - va_list args; int l_count; long long int num; unsigned long long int unum; char *str; - va_start(args, fmt); while (*fmt) { l_count = 0; @@ -94,12 +94,12 @@ loop: break; case 's': str = va_arg(args, char *); - string_print(str); + tf_string_print(str); break; case 'p': unum = (uintptr_t)va_arg(args, void *); if (unum) - string_print("0x"); + tf_string_print("0x"); unsigned_num_print(unum, 16); break; @@ -123,13 +123,20 @@ loop: break; default: /* Exit on any other format specifier */ - goto exit; + return; } fmt++; continue; } putchar(*fmt++); } -exit: - va_end(args); +} + +void tf_printf(const char *fmt, ...) +{ + va_list va; + + va_start(va, fmt); + tf_vprintf(fmt, va); + va_end(va); } diff --git a/include/common/debug.h b/include/common/debug.h index 814cf8402..b8582419a 100644 --- a/include/common/debug.h +++ b/include/common/debug.h @@ -24,6 +24,7 @@ #define LOG_LEVEL_VERBOSE 50 #ifndef __ASSEMBLY__ +#include #include #if LOG_LEVEL >= LOG_LEVEL_NOTICE @@ -65,6 +66,8 @@ void __dead2 __stack_chk_fail(void); void tf_printf(const char *fmt, ...) __printflike(1, 2); int tf_snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4); +void tf_vprintf(const char *fmt, va_list args); +void tf_string_print(const char *str); #endif /* __ASSEMBLY__ */ #endif /* __DEBUG_H__ */