1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2013 ARM Ltd. 4 */ 5 #ifndef __ASM_STRING_H 6 #define __ASM_STRING_H 7 8 #if !(defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)) 9 #define __HAVE_ARCH_STRRCHR 10 extern char *strrchr(const char *, int c); 11 12 #define __HAVE_ARCH_STRCHR 13 extern char *strchr(const char *, int c); 14 15 #define __HAVE_ARCH_STRCMP 16 extern int strcmp(const char *, const char *); 17 18 #define __HAVE_ARCH_STRNCMP 19 extern int strncmp(const char *, const char *, __kernel_size_t); 20 21 #define __HAVE_ARCH_STRLEN 22 extern __kernel_size_t strlen(const char *); 23 24 #define __HAVE_ARCH_STRNLEN 25 extern __kernel_size_t strnlen(const char *, __kernel_size_t); 26 27 #define __HAVE_ARCH_MEMCMP 28 extern int memcmp(const void *, const void *, size_t); 29 30 #define __HAVE_ARCH_MEMCHR 31 extern void *memchr(const void *, int, __kernel_size_t); 32 #endif 33 34 #define __HAVE_ARCH_MEMCPY 35 extern void *memcpy(void *, const void *, __kernel_size_t); 36 extern void *__memcpy(void *, const void *, __kernel_size_t); 37 38 #define __HAVE_ARCH_MEMMOVE 39 extern void *memmove(void *, const void *, __kernel_size_t); 40 extern void *__memmove(void *, const void *, __kernel_size_t); 41 42 #define __HAVE_ARCH_MEMSET 43 extern void *memset(void *, int, __kernel_size_t); 44 extern void *__memset(void *, int, __kernel_size_t); 45 46 #ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE 47 #define __HAVE_ARCH_MEMCPY_FLUSHCACHE 48 void memcpy_flushcache(void *dst, const void *src, size_t cnt); 49 #endif 50 51 #if (defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS)) && \ 52 !defined(__SANITIZE_ADDRESS__) 53 54 /* 55 * For files that are not instrumented (e.g. mm/slub.c) we 56 * should use not instrumented version of mem* functions. 57 */ 58 59 #define memcpy(dst, src, len) __memcpy(dst, src, len) 60 #define memmove(dst, src, len) __memmove(dst, src, len) 61 #define memset(s, c, n) __memset(s, c, n) 62 63 #ifndef __NO_FORTIFY 64 #define __NO_FORTIFY /* FORTIFY_SOURCE uses __builtin_memcpy, etc. */ 65 #endif 66 67 #endif 68 69 #endif 70
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.