Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.
1: #ifndef _LINUX_STRING_H_ 2: #define _LINUX_STRING_H_ 3: 4: 5: #include <linux/compiler.h> /* for inline */ 6: #include <linux/types.h> /* for size_t */ 7: #include <linux/stddef.h> /* for NULL */ 8: #include <stdarg.h> 9: #include <uapi/linux/string.h> 10: 11: extern char *strndup_user(const char __user *, long); 12: extern void *memdup_user(const void __user *, size_t); 13: 14: /* 15: * Include machine specific inline routines 16: */ 17: #include <asm/string.h> 18: 19: #ifndef __HAVE_ARCH_STRCPY 20: extern char * strcpy(char *,const char *); 21: #endif 22: #ifndef __HAVE_ARCH_STRNCPY 23: extern char * strncpy(char *,const char *, __kernel_size_t); 24: #endif 25: #ifndef __HAVE_ARCH_STRLCPY 26: size_t strlcpy(char *, const char *, size_t); 27: #endif 28: #ifndef __HAVE_ARCH_STRCAT 29: extern char * strcat(char *, const char *); 30: #endif 31: #ifndef __HAVE_ARCH_STRNCAT 32: extern char * strncat(char *, const char *, __kernel_size_t); 33: #endif 34: #ifndef __HAVE_ARCH_STRLCAT 35: extern size_t strlcat(char *, const char *, __kernel_size_t); 36: #endif 37: #ifndef __HAVE_ARCH_STRCMP 38: extern int strcmp(const char *,const char *); 39: #endif 40: #ifndef __HAVE_ARCH_STRNCMP 41: extern int strncmp(const char *,const char *,__kernel_size_t); 42: #endif 43: #ifndef __HAVE_ARCH_STRNICMP 44: extern int strnicmp(const char *, const char *, __kernel_size_t); 45: #endif 46: #ifndef __HAVE_ARCH_STRCASECMP 47: extern int strcasecmp(const char *s1, const char *s2); 48: #endif 49: #ifndef __HAVE_ARCH_STRNCASECMP 50: extern int strncasecmp(const char *s1, const char *s2, size_t n); 51: #endif 52: #ifndef __HAVE_ARCH_STRCHR 53: extern char * strchr(const char *,int); 54: #endif 55: #ifndef __HAVE_ARCH_STRNCHR 56: extern char * strnchr(const char *, size_t, int); 57: #endif 58: #ifndef __HAVE_ARCH_STRRCHR 59: extern char * strrchr(const char *,int); 60: #endif 61: extern char * __must_check skip_spaces(const char *); 62: 63: extern char *strim(char *); 64: 65: static inline __must_check char *strstrip(char *str) 66: { 67: return strim(str); 68: } 69: 70: #ifndef __HAVE_ARCH_STRSTR 71: extern char * strstr(const char *, const char *); 72: #endif 73: #ifndef __HAVE_ARCH_STRNSTR 74: extern char * strnstr(const char *, const char *, size_t); 75: #endif 76: #ifndef __HAVE_ARCH_STRLEN 77: extern __kernel_size_t strlen(const char *); 78: #endif 79: #ifndef __HAVE_ARCH_STRNLEN 80: extern __kernel_size_t strnlen(const char *,__kernel_size_t); 81: #endif 82: #ifndef __HAVE_ARCH_STRPBRK 83: extern char * strpbrk(const char *,const char *); 84: #endif 85: #ifndef __HAVE_ARCH_STRSEP 86: extern char * strsep(char **,const char *); 87: #endif 88: #ifndef __HAVE_ARCH_STRSPN 89: extern __kernel_size_t strspn(const char *,const char *); 90: #endif 91: #ifndef __HAVE_ARCH_STRCSPN 92: extern __kernel_size_t strcspn(const char *,const char *); 93: #endif 94: 95: #ifndef __HAVE_ARCH_MEMSET 96: extern void * memset(void *,int,__kernel_size_t); 97: #endif 98: #ifndef __HAVE_ARCH_MEMCPY 99: extern void * memcpy(void *,const void *,__kernel_size_t); 100: #endif 101: #ifndef __HAVE_ARCH_MEMMOVE 102: extern void * memmove(void *,const void *,__kernel_size_t); 103: #endif 104: #ifndef __HAVE_ARCH_MEMSCAN 105: extern void * memscan(void *,int,__kernel_size_t); 106: #endif 107: #ifndef __HAVE_ARCH_MEMCMP 108: extern int memcmp(const void *,const void *,__kernel_size_t); 109: #endif 110: #ifndef __HAVE_ARCH_MEMCHR 111: extern void * memchr(const void *,int,__kernel_size_t); 112: #endif 113: void *memchr_inv(const void *s, int c, size_t n); 114: 115: extern char *kstrdup(const char *s, gfp_t gfp); 116: extern char *kstrndup(const char *s, size_t len, gfp_t gfp); 117: extern void *kmemdup(const void *src, size_t len, gfp_t gfp); 118: 119: extern char **argv_split(gfp_t gfp, const char *str, int *argcp); 120: extern void argv_free(char **argv); 121: 122: extern bool sysfs_streq(const char *s1, const char *s2); 123: extern int strtobool(const char *s, bool *res); 124: 125: #ifdef CONFIG_BINARY_PRINTF 126: int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args); 127: int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf); 128: int bprintf(u32 *bin_buf, size_t size, const char *fmt, ...) __printf(3, 4); 129: #endif 130: 131: extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos, 132: const void *from, size_t available); 133: 134: /** 135: * strstarts - does @str start with @prefix? 136: * @str: string to examine 137: * @prefix: prefix to look for. 138: */ 139: static inline bool strstarts(const char *str, const char *prefix) 140: { 141: return strncmp(str, prefix, strlen(prefix)) == 0; 142: } 143: 144: extern size_t memweight(const void *ptr, size_t bytes); 145: 146: /** 147: * kbasename - return the last part of a pathname. 148: * 149: * @path: path to extract the filename from. 150: */ 151: static inline const char *kbasename(const char *path) 152: { 153: const char *tail = strrchr(path, '/'); 154: return tail ? tail + 1 : path; 155: } 156: 157: #endif /* _LINUX_STRING_H_ */ 158: