string.h函数的实现

来源:互联网 发布:林妙可妈妈 知乎 编辑:程序博客网 时间:2024/04/29 05:29

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