2005-04-17 02:20:36 +04:00
# include "linux/types.h"
# include "linux/module.h"
/* Some of this are builtin function (some are not but could in the future),
* so I * must * declare good prototypes for them and then EXPORT them .
* The kernel code uses the macro defined by include / linux / string . h ,
* so I undef macros ; the userspace code does not include that and I
2007-07-16 10:38:57 +04:00
* add an EXPORT for the glibc one .
*/
2005-04-17 02:20:36 +04:00
# undef strlen
# undef strstr
# undef memcpy
# undef memset
extern size_t strlen ( const char * ) ;
extern void * memcpy ( void * , const void * , size_t ) ;
extern void * memmove ( void * , const void * , size_t ) ;
extern void * memset ( void * , int , size_t ) ;
extern int printf ( const char * , . . . ) ;
2007-07-24 05:43:46 +04:00
/* If it's not defined, the export is included in lib/string.c.*/
2006-04-11 09:53:33 +04:00
# ifdef __HAVE_ARCH_STRSTR
EXPORT_SYMBOL ( strstr ) ;
# endif
2005-04-17 02:20:36 +04:00
EXPORT_SYMBOL ( memcpy ) ;
EXPORT_SYMBOL ( memmove ) ;
EXPORT_SYMBOL ( memset ) ;
EXPORT_SYMBOL ( printf ) ;
/* Here, instead, I can provide a fake prototype. Yes, someone cares: genksyms.
* However , the modules will use the CRC defined * here * , no matter if it is
* good ; so the versions of these symbols will always match
*/
# define EXPORT_SYMBOL_PROTO(sym) \
int sym ( void ) ; \
EXPORT_SYMBOL ( sym ) ;
2005-12-29 19:39:59 +03:00
extern void readdir64 ( void ) __attribute__ ( ( weak ) ) ;
EXPORT_SYMBOL ( readdir64 ) ;
extern void truncate64 ( void ) __attribute__ ( ( weak ) ) ;
EXPORT_SYMBOL ( truncate64 ) ;
2005-04-17 02:20:36 +04:00
# ifdef SUBARCH_i386
EXPORT_SYMBOL ( vsyscall_ehdr ) ;
EXPORT_SYMBOL ( vsyscall_end ) ;
# endif
EXPORT_SYMBOL_PROTO ( __errno_location ) ;
EXPORT_SYMBOL_PROTO ( access ) ;
EXPORT_SYMBOL_PROTO ( open ) ;
EXPORT_SYMBOL_PROTO ( open64 ) ;
EXPORT_SYMBOL_PROTO ( close ) ;
EXPORT_SYMBOL_PROTO ( read ) ;
EXPORT_SYMBOL_PROTO ( write ) ;
EXPORT_SYMBOL_PROTO ( dup2 ) ;
EXPORT_SYMBOL_PROTO ( __xstat ) ;
EXPORT_SYMBOL_PROTO ( __lxstat ) ;
EXPORT_SYMBOL_PROTO ( __lxstat64 ) ;
2007-07-16 10:38:57 +04:00
EXPORT_SYMBOL_PROTO ( __fxstat64 ) ;
2005-04-17 02:20:36 +04:00
EXPORT_SYMBOL_PROTO ( lseek ) ;
EXPORT_SYMBOL_PROTO ( lseek64 ) ;
EXPORT_SYMBOL_PROTO ( chown ) ;
2007-07-16 10:38:57 +04:00
EXPORT_SYMBOL_PROTO ( fchown ) ;
2005-04-17 02:20:36 +04:00
EXPORT_SYMBOL_PROTO ( truncate ) ;
2007-07-16 10:38:57 +04:00
EXPORT_SYMBOL_PROTO ( ftruncate64 ) ;
2005-04-17 02:20:36 +04:00
EXPORT_SYMBOL_PROTO ( utime ) ;
2007-07-16 10:38:57 +04:00
EXPORT_SYMBOL_PROTO ( utimes ) ;
EXPORT_SYMBOL_PROTO ( futimes ) ;
2005-04-17 02:20:36 +04:00
EXPORT_SYMBOL_PROTO ( chmod ) ;
2007-07-16 10:38:57 +04:00
EXPORT_SYMBOL_PROTO ( fchmod ) ;
2005-04-17 02:20:36 +04:00
EXPORT_SYMBOL_PROTO ( rename ) ;
EXPORT_SYMBOL_PROTO ( __xmknod ) ;
EXPORT_SYMBOL_PROTO ( symlink ) ;
EXPORT_SYMBOL_PROTO ( link ) ;
EXPORT_SYMBOL_PROTO ( unlink ) ;
EXPORT_SYMBOL_PROTO ( readlink ) ;
EXPORT_SYMBOL_PROTO ( mkdir ) ;
EXPORT_SYMBOL_PROTO ( rmdir ) ;
EXPORT_SYMBOL_PROTO ( opendir ) ;
EXPORT_SYMBOL_PROTO ( readdir ) ;
EXPORT_SYMBOL_PROTO ( closedir ) ;
EXPORT_SYMBOL_PROTO ( seekdir ) ;
EXPORT_SYMBOL_PROTO ( telldir ) ;
EXPORT_SYMBOL_PROTO ( ioctl ) ;
EXPORT_SYMBOL_PROTO ( pread64 ) ;
EXPORT_SYMBOL_PROTO ( pwrite64 ) ;
EXPORT_SYMBOL_PROTO ( statfs ) ;
EXPORT_SYMBOL_PROTO ( statfs64 ) ;
EXPORT_SYMBOL_PROTO ( getuid ) ;
2005-07-29 08:16:15 +04:00
EXPORT_SYMBOL_PROTO ( fsync ) ;
EXPORT_SYMBOL_PROTO ( fdatasync ) ;
2006-05-01 23:16:06 +04:00
/* Export symbols used by GCC for the stack protector. */
extern void __stack_smash_handler ( void * ) __attribute__ ( ( weak ) ) ;
EXPORT_SYMBOL ( __stack_smash_handler ) ;
extern long __guard __attribute__ ( ( weak ) ) ;
EXPORT_SYMBOL ( __guard ) ;