2005-04-16 15:20:36 -07:00
/*
* Copyright ( C ) 2000 - 2004 Jeff Dike ( jdike @ karaya . com )
* Licensed under the GPL
*/
# ifndef _UM_UNISTD_H_
# define _UM_UNISTD_H_
# include <linux/syscalls.h>
# include "linux/resource.h"
# include "asm/uaccess.h"
extern int um_execve ( const char * file , char * const argv [ ] , char * const env [ ] ) ;
# ifdef __KERNEL__
/* We get __ARCH_WANT_OLD_STAT and __ARCH_WANT_STAT64 from the base arch */
# define __ARCH_WANT_IPC_PARSE_VERSION
# define __ARCH_WANT_OLD_READDIR
# define __ARCH_WANT_SYS_ALARM
# define __ARCH_WANT_SYS_GETHOSTNAME
# define __ARCH_WANT_SYS_PAUSE
# define __ARCH_WANT_SYS_SGETMASK
# define __ARCH_WANT_SYS_SIGNAL
# define __ARCH_WANT_SYS_TIME
# define __ARCH_WANT_SYS_UTIME
# define __ARCH_WANT_SYS_WAITPID
# define __ARCH_WANT_SYS_SOCKETCALL
# define __ARCH_WANT_SYS_FADVISE64
# define __ARCH_WANT_SYS_GETPGRP
# define __ARCH_WANT_SYS_LLSEEK
# define __ARCH_WANT_SYS_NICE
# define __ARCH_WANT_SYS_OLD_GETRLIMIT
# define __ARCH_WANT_SYS_OLDUMOUNT
# define __ARCH_WANT_SYS_SIGPENDING
# define __ARCH_WANT_SYS_SIGPROCMASK
# define __ARCH_WANT_SYS_RT_SIGACTION
2006-01-18 17:44:03 -08:00
# define __ARCH_WANT_SYS_RT_SIGSUSPEND
2005-04-16 15:20:36 -07:00
# endif
# ifdef __KERNEL_SYSCALLS__
# include <linux/compiler.h>
# include <linux/types.h>
static inline int execve ( const char * filename , char * const argv [ ] ,
char * const envp [ ] )
{
mm_segment_t fs ;
int ret ;
fs = get_fs ( ) ;
set_fs ( KERNEL_DS ) ;
ret = um_execve ( filename , argv , envp ) ;
set_fs ( fs ) ;
if ( ret > = 0 )
return ret ;
errno = - ( long ) ret ;
return - 1 ;
}
int sys_execve ( char * file , char * * argv , char * * env ) ;
# endif /* __KERNEL_SYSCALLS__ */
# undef __KERNEL_SYSCALLS__
# include "asm/arch/unistd.h"
# endif /* _UM_UNISTD_H_*/