Merge master.kernel.org:/home/rmk/linux-2.6-arm
[linux-2.6] / include / asm-um / unistd.h
1 /* 
2  * Copyright (C) 2000 - 2004  Jeff Dike (jdike@karaya.com)
3  * Licensed under the GPL
4  */
5
6 #ifndef _UM_UNISTD_H_
7 #define _UM_UNISTD_H_
8
9 #include <linux/syscalls.h>
10 #include "linux/resource.h"
11 #include "asm/uaccess.h"
12
13 extern int um_execve(const char *file, char *const argv[], char *const env[]);
14
15 #ifdef __KERNEL__
16 /* We get __ARCH_WANT_OLD_STAT and __ARCH_WANT_STAT64 from the base arch */
17 #define __ARCH_WANT_IPC_PARSE_VERSION
18 #define __ARCH_WANT_OLD_READDIR
19 #define __ARCH_WANT_SYS_ALARM
20 #define __ARCH_WANT_SYS_GETHOSTNAME
21 #define __ARCH_WANT_SYS_PAUSE
22 #define __ARCH_WANT_SYS_SGETMASK
23 #define __ARCH_WANT_SYS_SIGNAL
24 #define __ARCH_WANT_SYS_TIME
25 #define __ARCH_WANT_SYS_UTIME
26 #define __ARCH_WANT_SYS_WAITPID
27 #define __ARCH_WANT_SYS_SOCKETCALL
28 #define __ARCH_WANT_SYS_FADVISE64
29 #define __ARCH_WANT_SYS_GETPGRP
30 #define __ARCH_WANT_SYS_LLSEEK
31 #define __ARCH_WANT_SYS_NICE
32 #define __ARCH_WANT_SYS_OLD_GETRLIMIT
33 #define __ARCH_WANT_SYS_OLDUMOUNT
34 #define __ARCH_WANT_SYS_SIGPENDING
35 #define __ARCH_WANT_SYS_SIGPROCMASK
36 #define __ARCH_WANT_SYS_RT_SIGACTION
37 #endif
38
39 #ifdef __KERNEL_SYSCALLS__
40
41 #include <linux/compiler.h>
42 #include <linux/types.h>
43
44 static inline int execve(const char *filename, char *const argv[],
45                          char *const envp[])
46 {
47         mm_segment_t fs;
48         int ret;
49
50         fs = get_fs();
51         set_fs(KERNEL_DS);
52         ret = um_execve(filename, argv, envp);
53         set_fs(fs);
54
55         if (ret >= 0)
56                 return ret;
57
58         errno = -(long)ret;
59         return -1;
60 }
61
62 int sys_execve(char *file, char **argv, char **env);
63
64 #endif /* __KERNEL_SYSCALLS__ */
65
66 #undef __KERNEL_SYSCALLS__
67 #include "asm/arch/unistd.h"
68
69 #endif /* _UM_UNISTD_H_*/