mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 23:24:11 +08:00
caab277b1d
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not see http www gnu org licenses extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 503 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Alexios Zavras <alexios.zavras@intel.com> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Enrico Weigelt <info@metux.net> Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190602204653.811534538@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
69 lines
1.8 KiB
C
69 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2013 ARM Ltd.
|
|
*/
|
|
#ifndef __ASM_STRING_H
|
|
#define __ASM_STRING_H
|
|
|
|
#ifndef CONFIG_KASAN
|
|
#define __HAVE_ARCH_STRRCHR
|
|
extern char *strrchr(const char *, int c);
|
|
|
|
#define __HAVE_ARCH_STRCHR
|
|
extern char *strchr(const char *, int c);
|
|
|
|
#define __HAVE_ARCH_STRCMP
|
|
extern int strcmp(const char *, const char *);
|
|
|
|
#define __HAVE_ARCH_STRNCMP
|
|
extern int strncmp(const char *, const char *, __kernel_size_t);
|
|
|
|
#define __HAVE_ARCH_STRLEN
|
|
extern __kernel_size_t strlen(const char *);
|
|
|
|
#define __HAVE_ARCH_STRNLEN
|
|
extern __kernel_size_t strnlen(const char *, __kernel_size_t);
|
|
|
|
#define __HAVE_ARCH_MEMCMP
|
|
extern int memcmp(const void *, const void *, size_t);
|
|
|
|
#define __HAVE_ARCH_MEMCHR
|
|
extern void *memchr(const void *, int, __kernel_size_t);
|
|
#endif
|
|
|
|
#define __HAVE_ARCH_MEMCPY
|
|
extern void *memcpy(void *, const void *, __kernel_size_t);
|
|
extern void *__memcpy(void *, const void *, __kernel_size_t);
|
|
|
|
#define __HAVE_ARCH_MEMMOVE
|
|
extern void *memmove(void *, const void *, __kernel_size_t);
|
|
extern void *__memmove(void *, const void *, __kernel_size_t);
|
|
|
|
#define __HAVE_ARCH_MEMSET
|
|
extern void *memset(void *, int, __kernel_size_t);
|
|
extern void *__memset(void *, int, __kernel_size_t);
|
|
|
|
#ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE
|
|
#define __HAVE_ARCH_MEMCPY_FLUSHCACHE
|
|
void memcpy_flushcache(void *dst, const void *src, size_t cnt);
|
|
#endif
|
|
|
|
#if defined(CONFIG_KASAN) && !defined(__SANITIZE_ADDRESS__)
|
|
|
|
/*
|
|
* For files that are not instrumented (e.g. mm/slub.c) we
|
|
* should use not instrumented version of mem* functions.
|
|
*/
|
|
|
|
#define memcpy(dst, src, len) __memcpy(dst, src, len)
|
|
#define memmove(dst, src, len) __memmove(dst, src, len)
|
|
#define memset(s, c, n) __memset(s, c, n)
|
|
|
|
#ifndef __NO_FORTIFY
|
|
#define __NO_FORTIFY /* FORTIFY_SOURCE uses __builtin_memcpy, etc. */
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#endif
|