string.h函數的實現
string.h
/*
file:string.h
#ifndef _LINUX_STRING_H_
#define _LINUX_STRING_H_
/* We don't want strings.h stuff being user by user stuff by accident */
#ifdef __KERNEL__
#include <linux/types.h> /* for size_t */
#include <linux/stddef.h> /* for NULL */
#include <linux/compiler.h> /* for inline ((always_inline)) */
#ifdef __cplusplus
extern
"
C
"
{
#endif
extern
char
* ___strtok;
extern
char
* strpbrk(
const
char
*,
const
char
*);
extern
char
* strtok(
char
*,
const
char
*);
extern
char
* strsep(
char
**,
const
char
*);
extern
__kernel_size_t strspn(
const
char
*,
const
char
*);
/*
* Include machine specific inline routines
*/
#include <asm/string.h>
#ifndef __HAVE_ARCH_STRCPY
extern
char
* strcpy(
char
*,
const
char
*);
#endif
#ifndef __HAVE_ARCH_STRNCPY
extern
char
* strncpy(
char
*,
const
char
*, __kernel_size_t);
#endif
#ifndef __HAVE_ARCH_STRCAT
extern
char
* strcat(
char
*,
const
char
*);
#endif
#ifndef __HAVE_ARCH_STRNCAT
extern
char
* strncat(
char
*,
const
char
*, __kernel_size_t);
#endif
#ifndef __HAVE_ARCH_STRCMP
extern
int
strcmp(
const
char
*,
const
char
*);
#endif
#ifndef __HAVE_ARCH_STRNCMP
extern
int
strncmp(
const
char
*,
const
char
*,__kernel_size_t);
#endif
#ifndef __HAVE_ARCH_STRNICMP
extern
int
strnicmp(
const
char
*,
const
char
*, __kernel_size_t);
#endif
#ifndef __HAVE_ARCH_STRCHR
extern
char
* strchr(
const
char
*,
int
);
#endif
#ifndef __HAVE_ARCH_STRRCHR
extern
char
* strrchr(
const
char
*,
int
);
#endif
#ifndef __HAVE_ARCH_STRSTR
extern
char
* strstr(
const
char
*,
const
char
*);
#endif
#ifndef __HAVE_ARCH_STRLEN
extern
__kernel_size_t strlen(
const
char
*);
#endif
#ifndef __HAVE_ARCH_STRNLEN
extern
__kernel_size_t strnlen(
const
char
*,__kernel_size_t);
#endif
#ifndef __HAVE_ARCH_MEMSET
extern
void
* memset(
void
*,
int
,__kernel_size_t);
#endif
#ifndef __HAVE_ARCH_MEMCPY
extern
void
* memcpy(
void
*,
const
void
*,__kernel_size_t);
#endif
#ifndef __HAVE_ARCH_MEMMOVE
extern
void
* memmove(
void
*,
const
void
*,__kernel_size_t);
#endif
#ifndef __HAVE_ARCH_MEMSCAN
extern
void
* memscan(
void
*,
int
,__kernel_size_t);
#endif
#ifndef __HAVE_ARCH_MEMCMP
extern
int
memcmp(
const
void
*,
const
void
*,__kernel_size_t);
#endif
#ifndef __HAVE_ARCH_MEMCHR
extern
void
* memchr(
const
void
*,
int
,__kernel_size_t);
#endif
#ifdef __cplusplus
}
#endif
#endif
#endif /* _LINUX_STRING_H_ */
*/
string.c