mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-25 06:19:56 +00:00
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>
This commit is contained in:
parent
cb6dbfe3dc
commit
870ce3ddd3
8 changed files with 23 additions and 42 deletions
2
Makefile
2
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 \
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -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;
|
|
@ -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();
|
||||
}
|
Loading…
Add table
Reference in a new issue