/* * 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 #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_*/