| /****************************************************************************** |
| * Copyright (c) 2004, 2016 IBM Corporation |
| * All rights reserved. |
| * This program and the accompanying materials |
| * are made available under the terms of the BSD License |
| * which accompanies this distribution, and is available at |
| * http://www.opensource.org/licenses/bsd-license.php |
| * |
| * Contributors: |
| * IBM Corporation - initial implementation |
| *****************************************************************************/ |
| |
| #ifndef _STRING_H |
| #define _STRING_H |
| |
| #include "stddef.h" |
| |
| #define strcpy __builtin_strcpy |
| #define strncpy __builtin_strncpy |
| #define strcat __builtin_strcat |
| #define strcmp __builtin_strcmp |
| #define strncmp __builtin_strncmp |
| #define strcasecmp __builtin_strcasecmp |
| #define strncasecmp __builtin_strncasecmp |
| #define strchr __builtin_strchr |
| #define strrchr __builtin_strrchr |
| #define strlen __builtin_strlen |
| #define strlen __builtin_strlen |
| size_t strnlen(const char *s, size_t maxlen); |
| #define strstr __builtin_strstr |
| #define strdup __builtin_strdup |
| char *strtok(char *src, const char *pattern); |
| |
| #define memset __builtin_memset |
| #define memchr __builtin_memchr |
| #define memcpy __builtin_memcpy |
| #define memmove __builtin_memmove |
| #define memcmp __builtin_memcmp |
| static inline void *memcpy_null(void *dest, const void *src, size_t n) |
| { |
| asm("" : "+r"(dest)); |
| asm("" : "+r"(src)); |
| return memcpy(dest, src, n); |
| } |
| void *memcpy_from_ci(void *destpp, const void *srcpp, size_t len); |
| |
| static inline int ffs(unsigned long val) |
| { |
| return __builtin_ffs(val); |
| } |
| |
| #endif |