1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#ifndef __ASM_STRING_H
17#define __ASM_STRING_H
18
19#define __HAVE_ARCH_STRRCHR
20extern char *strrchr(const char *, int c);
21
22#define __HAVE_ARCH_STRCHR
23extern char *strchr(const char *, int c);
24
25#define __HAVE_ARCH_STRCMP
26extern int strcmp(const char *, const char *);
27
28#define __HAVE_ARCH_STRNCMP
29extern int strncmp(const char *, const char *, __kernel_size_t);
30
31#define __HAVE_ARCH_STRLEN
32extern __kernel_size_t strlen(const char *);
33
34#define __HAVE_ARCH_STRNLEN
35extern __kernel_size_t strnlen(const char *, __kernel_size_t);
36
37#define __HAVE_ARCH_MEMCPY
38extern void *memcpy(void *, const void *, __kernel_size_t);
39extern void *__memcpy(void *, const void *, __kernel_size_t);
40
41#define __HAVE_ARCH_MEMMOVE
42extern void *memmove(void *, const void *, __kernel_size_t);
43extern void *__memmove(void *, const void *, __kernel_size_t);
44
45#define __HAVE_ARCH_MEMCHR
46extern void *memchr(const void *, int, __kernel_size_t);
47
48#define __HAVE_ARCH_MEMSET
49extern void *memset(void *, int, __kernel_size_t);
50extern void *__memset(void *, int, __kernel_size_t);
51
52#define __HAVE_ARCH_MEMCMP
53extern int memcmp(const void *, const void *, size_t);
54
55#ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE
56#define __HAVE_ARCH_MEMCPY_FLUSHCACHE
57void memcpy_flushcache(void *dst, const void *src, size_t cnt);
58#endif
59
60#if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__)
61
62
63
64
65
66
67#define memcpy(dst, src, len) __memcpy(dst, src, len)
68#define memmove(dst, src, len) __memmove(dst, src, len)
69#define memset(s, c, n) __memset(s, c, n)
70
71#ifndef __NO_FORTIFY
72#define __NO_FORTIFY
73#endif
74
75#endif
76
77#endif
78