aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Nino Diaz <antonio.ninodiaz@arm.com>2018-08-15 17:02:28 +0100
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>2018-08-22 10:26:05 +0100
commit870ce3ddd3b33c59418a7dba703e8a66ec75f98f (patch)
tree263cf675728e0ec8e0b560cf31f7043cb895df41
parentcb6dbfe3dc56088895c06b0492cfce289288444e (diff)
downloadtrusted-firmware-a-870ce3ddd3b33c59418a7dba703e8a66ec75f98f.tar.gz
libc: Move tf_printf and tf_snprintf to libc
Change their names to printf and snprintf. They are much smaller than the previous versions we had, which makes them better suited for the Trusted Firmware. Change-Id: Ia872af91b7b967c47fce012eccecede7873a3daf Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
-rw-r--r--Makefile2
-rw-r--r--common/tf_log.c8
-rw-r--r--docs/psci-lib-integration-guide.rst10
-rw-r--r--include/common/debug.h10
-rw-r--r--include/lib/libc/stdio.h10
-rw-r--r--lib/libc/libc.mk4
-rw-r--r--lib/libc/printf.c (renamed from common/tf_printf.c)17
-rw-r--r--lib/libc/snprintf.c (renamed from common/tf_snprintf.c)4
8 files changed, 23 insertions, 42 deletions
diff --git a/Makefile b/Makefile
index cb7eb08cf..e7ca14a57 100644
--- a/Makefile
+++ b/Makefile
@@ -202,8 +202,6 @@ include lib/libc/libc.mk
BL_COMMON_SOURCES += common/bl_common.c \
common/tf_log.c \
- common/tf_printf.c \
- common/tf_snprintf.c \
common/${ARCH}/debug.S \
lib/${ARCH}/cache_helpers.S \
lib/${ARCH}/misc_helpers.S \
diff --git a/common/tf_log.c b/common/tf_log.c
index 54c0a4363..6da1e85b6 100644
--- a/common/tf_log.c
+++ b/common/tf_log.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -36,11 +36,11 @@ void tf_log(const char *fmt, ...)
prefix_str = plat_log_get_prefix(log_level);
- if (prefix_str != NULL)
- tf_string_print(prefix_str);
+ while (*prefix_str)
+ putchar(*prefix_str++);
va_start(args, fmt);
- tf_vprintf(fmt+1, args);
+ vprintf(fmt + 1, args);
va_end(args);
}
diff --git a/docs/psci-lib-integration-guide.rst b/docs/psci-lib-integration-guide.rst
index 47cbfcc8d..d86fc29e6 100644
--- a/docs/psci-lib-integration-guide.rst
+++ b/docs/psci-lib-integration-guide.rst
@@ -319,7 +319,7 @@ and some helper utilities for assert, print and memory operations as listed
below. The TF-A source tree provides implementations for all
these functions but the EL3 Runtime Software may use its own implementation.
-**Functions : assert(), memcpy(), memset**
+**Functions : assert(), memcpy(), memset(), printf()**
These must be implemented as described in ISO C Standard.
@@ -353,14 +353,6 @@ This function invalidates (flushes) the data cache for memory at address
This function will be called by the PSCI library on encountering a critical
failure that cannot be recovered from. This function **must not** return.
-**Function : tf\_printf()**
-
-This is printf-compatible function, but unlike printf, it does not return any
-value. The TF-A source tree provides an implementation which
-is optimized for stack usage and supports only a subset of format specifiers.
-The details of the format specifiers supported can be found in the
-``tf_printf.c`` file in the TF-A source tree.
-
CPU Context management API
~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/include/common/debug.h b/include/common/debug.h
index 3c99ce501..4c5560f5f 100644
--- a/include/common/debug.h
+++ b/include/common/debug.h
@@ -4,8 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef __DEBUG_H__
-#define __DEBUG_H__
+#ifndef DEBUG_H
+#define DEBUG_H
/*
* The log output macros print output to the console. These macros produce
@@ -90,11 +90,7 @@ void __dead2 do_panic(void);
void __dead2 __stack_chk_fail(void);
void tf_log(const char *fmt, ...) __printflike(1, 2);
-int tf_printf(const char *fmt, ...) __printflike(1, 2);
-int tf_snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4);
-int tf_vprintf(const char *fmt, va_list args);
-int tf_string_print(const char *str);
void tf_log_set_max_level(unsigned int log_level);
#endif /* __ASSEMBLY__ */
-#endif /* __DEBUG_H__ */
+#endif /* DEBUG_H */
diff --git a/include/lib/libc/stdio.h b/include/lib/libc/stdio.h
index 83fd18c57..3d9323efa 100644
--- a/include/lib/libc/stdio.h
+++ b/include/lib/libc/stdio.h
@@ -11,6 +11,7 @@
#ifndef STDIO_H
#define STDIO_H
+#include <cdefs.h>
#include <stdio_.h>
#ifndef NULL
@@ -19,14 +20,11 @@
#define EOF -1
-int printf(const char *fmt, ...);
-int snprintf(char *s, size_t n, const char *fmt, ...);
-int sprintf(char *s, const char *fmt, ...);
-int sscanf(const char *s, const char *fmt, ...);
+int printf(const char *fmt, ...) __printflike(1, 2);
+int snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4);
#ifdef STDARG_H
-int vsnprintf(char *s, size_t n, const char *fmt, va_list arg);
-int vsprintf(char *s, const char *fmt, va_list arg);
+int vprintf(const char *fmt, va_list args);
#endif
int putchar(int c);
diff --git a/lib/libc/libc.mk b/lib/libc/libc.mk
index 0dee4f55e..554f36bb7 100644
--- a/lib/libc/libc.mk
+++ b/lib/libc/libc.mk
@@ -16,12 +16,12 @@ LIBC_SRCS := $(addprefix lib/libc/, \
printf.c \
putchar.c \
puts.c \
+ snprintf.c \
strchr.c \
strcmp.c \
strlen.c \
strncmp.c \
- strnlen.c \
- subr_prf.c)
+ strnlen.c)
INCLUDES += -Iinclude/lib/libc \
-Iinclude/lib/libc/$(ARCH) \
diff --git a/common/tf_printf.c b/lib/libc/printf.c
index ecf058ca9..a1a802483 100644
--- a/common/tf_printf.c
+++ b/lib/libc/printf.c
@@ -1,13 +1,10 @@
/*
- * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2014-2018, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
-#include <arch.h>
-#include <arch_helpers.h>
#include <assert.h>
#include <debug.h>
-#include <limits.h>
#include <stdarg.h>
#include <stdint.h>
@@ -23,7 +20,7 @@
(((_lcount) > 1) ? va_arg(_args, unsigned long long int) : \
((_lcount) ? va_arg(_args, unsigned long int) : va_arg(_args, unsigned int)))
-int tf_string_print(const char *str)
+static int string_print(const char *str)
{
int count = 0;
@@ -87,7 +84,7 @@ static int 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.
*******************************************************************/
-int tf_vprintf(const char *fmt, va_list args)
+int vprintf(const char *fmt, va_list args)
{
int l_count;
long long int num;
@@ -121,12 +118,12 @@ loop:
break;
case 's':
str = va_arg(args, char *);
- count += tf_string_print(str);
+ count += string_print(str);
break;
case 'p':
unum = (uintptr_t)va_arg(args, void *);
if (unum) {
- count += tf_string_print("0x");
+ count += string_print("0x");
padn -= 2;
}
@@ -180,13 +177,13 @@ loop:
return count;
}
-int tf_printf(const char *fmt, ...)
+int printf(const char *fmt, ...)
{
int count;
va_list va;
va_start(va, fmt);
- count = tf_vprintf(fmt, va);
+ count = vprintf(fmt, va);
va_end(va);
return count;
diff --git a/common/tf_snprintf.c b/lib/libc/snprintf.c
index 6df137725..0738a8696 100644
--- a/common/tf_snprintf.c
+++ b/lib/libc/snprintf.c
@@ -52,7 +52,7 @@ static void unsigned_dec_print(char **s, size_t n, size_t *chars_printed,
* buffer was big enough. If it returns a value lower than n, the
* whole string has been written.
*******************************************************************/
-int tf_snprintf(char *s, size_t n, const char *fmt, ...)
+int snprintf(char *s, size_t n, const char *fmt, ...)
{
va_list args;
int num;
@@ -102,7 +102,7 @@ int tf_snprintf(char *s, size_t n, const char *fmt, ...)
break;
default:
/* Panic on any other format specifier. */
- ERROR("tf_snprintf: specifier with ASCII code '%d' not supported.",
+ ERROR("snprintf: specifier with ASCII code '%d' not supported.",
*fmt);
plat_panic_handler();
}