xref: /rk3399_ARM-atf/include/lib/libc/string.h (revision 1727d690d29ef604f1fcf183e35c06d33d974e63)
1 /*
2  * Copyright (c) 2012-2017 Roberto E. Vargas Caballero
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 /*
7  * Portions copyright (c) 2018-2025, Arm Limited and Contributors.
8  * Portions copyright (c) 2023, Intel Corporation. All rights reserved.
9  * All rights reserved.
10  */
11 
12 #ifndef STRING_H
13 #define STRING_H
14 
15 #include <stddef.h>
16 
17 /*
18  * When conditions are right, the compiler may have a baked-in call that can be
19  * inlined and that will be much more optimal than our generic implementation.
20  * When it doesn't, it will emit a call to the original function for which we
21  * provide an implementation.
22  */
23 #define memcpy  __builtin_memcpy
24 #define memset  __builtin_memset
25 #define memcmp  __builtin_memcmp
26 #define memchr  __builtin_memchr
27 #define strcmp  __builtin_strcmp
28 #define strncmp __builtin_strncmp
29 #define strchr  __builtin_strchr
30 #define strlen  __builtin_strlen
31 #define strrchr __builtin_strrchr
32 
33 int memcpy_s(void *dst, size_t dsize, void *src, size_t ssize);
34 void *memmove(void *dst, const void *src, size_t len);
35 void *memrchr(const void *src, int c, size_t len);
36 size_t strnlen(const char *s, size_t maxlen);
37 size_t strlcpy(char * dst, const char * src, size_t dsize);
38 size_t strlcat(char * dst, const char * src, size_t dsize);
39 char *strtok_r(char *s, const char *delim, char **last);
40 size_t strnlen_secure(const char *str, size_t maxlen);
41 int strcpy_secure(char *restrict dest, size_t dest_size, const char *restrict src);
42 
43 #endif /* STRING_H */
44