mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-05-08 18:41:22 +00:00
libc: Introduce cdefs.h, assert.h and strlen.c
Change-Id: I76091d52571f1950111c4b1670d5fc3883607715 Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
4661abc7c4
commit
8bb6de1518
3 changed files with 84 additions and 0 deletions
39
include/lib/libc/assert.h
Normal file
39
include/lib/libc/assert.h
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ASSERT_H
|
||||||
|
#define ASSERT_H
|
||||||
|
|
||||||
|
#include <cdefs.h>
|
||||||
|
#include <debug.h>
|
||||||
|
#include <platform_def.h>
|
||||||
|
|
||||||
|
#ifndef PLAT_LOG_LEVEL_ASSERT
|
||||||
|
#define PLAT_LOG_LEVEL_ASSERT LOG_LEVEL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_ASSERTIONS
|
||||||
|
# if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
|
||||||
|
# define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
|
||||||
|
# elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
|
||||||
|
# define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__))
|
||||||
|
# else
|
||||||
|
# define assert(e) ((e) ? (void)0 : __assert())
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
#define assert(e) ((void)0)
|
||||||
|
#endif /* ENABLE_ASSERTIONS */
|
||||||
|
|
||||||
|
#if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
|
||||||
|
__dead2 void __assert(const char *file, unsigned int line,
|
||||||
|
const char *assertion);
|
||||||
|
#elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
|
||||||
|
__dead2 void __assert(const char *file, unsigned int line);
|
||||||
|
#else
|
||||||
|
__dead2 void __assert(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* ASSERT_H */
|
28
include/lib/libc/cdefs.h
Normal file
28
include/lib/libc/cdefs.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CDEFS_H
|
||||||
|
#define CDEFS_H
|
||||||
|
|
||||||
|
#define __dead2 __attribute__((__noreturn__))
|
||||||
|
#define __deprecated __attribute__((__deprecated__))
|
||||||
|
#define __packed __attribute__((__packed__))
|
||||||
|
#define __used __attribute__((__used__))
|
||||||
|
#define __unused __attribute__((__unused__))
|
||||||
|
#define __aligned(x) __attribute__((__aligned__(x)))
|
||||||
|
#define __section(x) __attribute__((__section__(x)))
|
||||||
|
|
||||||
|
#define __printflike(fmtarg, firstvararg) \
|
||||||
|
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
|
||||||
|
|
||||||
|
#define __weak_reference(sym, alias) \
|
||||||
|
__asm__(".weak alias"); \
|
||||||
|
__asm__(".equ alias, sym")
|
||||||
|
|
||||||
|
#define __STRING(x) #x
|
||||||
|
#define __XSTRING(x) __STRING(x)
|
||||||
|
|
||||||
|
#endif /* CDEFS_H */
|
17
lib/libc/strlen.c
Normal file
17
lib/libc/strlen.c
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
size_t strlen(const char *s)
|
||||||
|
{
|
||||||
|
const char *cursor = s;
|
||||||
|
|
||||||
|
while (*cursor)
|
||||||
|
cursor++;
|
||||||
|
|
||||||
|
return cursor - s;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue