diff options
| author | Christoph Hellwig <hch@lst.de> | 2010-03-10 18:21:13 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-12 18:52:32 -0500 |
| commit | 5d0e52830e9ae09b872567f4aca3dfb5b5918079 (patch) | |
| tree | 55a199575058da551ccc837ab35a1f4826a8c5b4 /arch/arm | |
| parent | 724ee626f38feaea215a11790e1a0cb5d83b0628 (diff) | |
Add generic sys_old_select()
Add a generic implementation of the old select() syscall, which expects
its argument in a memory block and switch all architectures over to use
it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Hirokazu Takata <takata@linux-m32r.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Reviewed-by: H. Peter Anvin <hpa@zytor.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: James Morris <jmorris@namei.org>
Acked-by: Andreas Schwab <schwab@linux-m68k.org>
Acked-by: Russell King <rmk+kernel@arm.linux.org.uk>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: David Howells <dhowells@redhat.com>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/arm')
| -rw-r--r-- | arch/arm/include/asm/unistd.h | 1 | ||||
| -rw-r--r-- | arch/arm/kernel/calls.S | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/sys_arm.c | 21 |
3 files changed, 2 insertions, 22 deletions
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h index cf9cdaa2d4d4..e18500d305ba 100644 --- a/arch/arm/include/asm/unistd.h +++ b/arch/arm/include/asm/unistd.h | |||
| @@ -443,6 +443,7 @@ | |||
| 443 | #define __ARCH_WANT_SYS_SIGPROCMASK | 443 | #define __ARCH_WANT_SYS_SIGPROCMASK |
| 444 | #define __ARCH_WANT_SYS_RT_SIGACTION | 444 | #define __ARCH_WANT_SYS_RT_SIGACTION |
| 445 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 445 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
| 446 | #define __ARCH_WANT_SYS_OLD_SELECT | ||
| 446 | 447 | ||
| 447 | #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) | 448 | #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) |
| 448 | #define __ARCH_WANT_SYS_TIME | 449 | #define __ARCH_WANT_SYS_TIME |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 9314a2d681f1..7671e9a75449 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
| @@ -91,7 +91,7 @@ | |||
| 91 | CALL(sys_settimeofday) | 91 | CALL(sys_settimeofday) |
| 92 | /* 80 */ CALL(sys_getgroups16) | 92 | /* 80 */ CALL(sys_getgroups16) |
| 93 | CALL(sys_setgroups16) | 93 | CALL(sys_setgroups16) |
| 94 | CALL(OBSOLETE(old_select)) /* used by libc4 */ | 94 | CALL(OBSOLETE(sys_old_select)) /* used by libc4 */ |
| 95 | CALL(sys_symlink) | 95 | CALL(sys_symlink) |
| 96 | CALL(sys_ni_syscall) /* was sys_lstat */ | 96 | CALL(sys_ni_syscall) /* was sys_lstat */ |
| 97 | /* 85 */ CALL(sys_readlink) | 97 | /* 85 */ CALL(sys_readlink) |
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c index ae4027bd01bd..e59cddedcbba 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c | |||
| @@ -54,27 +54,6 @@ out: | |||
| 54 | return error; | 54 | return error; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | /* | ||
| 58 | * Perform the select(nd, in, out, ex, tv) and mmap() system | ||
| 59 | * calls. | ||
| 60 | */ | ||
| 61 | |||
| 62 | struct sel_arg_struct { | ||
| 63 | unsigned long n; | ||
| 64 | fd_set __user *inp, *outp, *exp; | ||
| 65 | struct timeval __user *tvp; | ||
| 66 | }; | ||
| 67 | |||
| 68 | asmlinkage int old_select(struct sel_arg_struct __user *arg) | ||
| 69 | { | ||
| 70 | struct sel_arg_struct a; | ||
| 71 | |||
| 72 | if (copy_from_user(&a, arg, sizeof(a))) | ||
| 73 | return -EFAULT; | ||
| 74 | /* sys_select() does the appropriate kernel locking */ | ||
| 75 | return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp); | ||
| 76 | } | ||
| 77 | |||
| 78 | #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) | 57 | #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) |
| 79 | /* | 58 | /* |
| 80 | * sys_ipc() is the de-multiplexer for the SysV IPC calls.. | 59 | * sys_ipc() is the de-multiplexer for the SysV IPC calls.. |
