IA-32: Support for new system call: waitid
PATCH 1/1 IA-32: Support for new system call: waitid
Hi Tony,
The attached patch adds support for the new system call waitid that was introduced recently.
-Arun
Added support for the new syscall sys_waitid()
Index: linux-2.6-cvs/arch/ia64/ia32/ia32_entry.S
===================================================================
RCS file: /home/adsharma/disk2/cvs/linux-2.5/arch/ia64/ia32/ia32_entry.S,v retrieving revision 1.37
arch/ia64/ia32/ia32_entry.S +2 -0
@@ -493,6 +493,8 @@ data8 compat_sys_mq_timedreceive /* 280 */ data8 compat_sys_mq_notify data8 compat_sys_mq_getsetattr + data8 sys_ni_syscall /* reserved for kexec */ + data8 sys32_waitid // guard against failures to increase IA32_NR_syscalls .org ia32_syscall_table + 8*IA32_NR_syscalls
Index: linux-2.6-cvs/arch/ia64/ia32/sys_ia32.c
===================================================================
RCS file: /home/adsharma/disk2/cvs/linux-2.5/arch/ia64/ia32/sys_ia32.c,v retrieving revision 1.71
arch/ia64/ia32/sys_ia32.c +26 -0
@@ -2728,6 +2728,32 @@ advice); } +asmlinkage long sys32_waitid (int which,compat_pid_t pid, +siginfo_t32 __user *uinfo,int options, +struct compat_rusage __user *uru) +{ +siginfo_t info; +struct rusage ru; +long ret; +mm_segment_t old_fs =get_fs (); + + info.si_signo =0 ; +set_fs (KERNEL_DS ); + ret =sys_waitid (which, pid, (siginfo_t __user *) &info, options, + uru ? &ru :NULL ); +set_fs (old_fs); + +if (ret <0 || info.si_signo ==0 ) +return ret; + +if (uru && (ret =put_compat_rusage (&ru, uru))) +return ret; + +BUG_ON (info.si_code & __SI_MASK); + info.si_code |= __SI_CHLD; +return copy_siginfo_to_user32 (uinfo, &info); +} +#ifdef NOTYET /* UNTESTED FOR IA64 FROM HERE DOWN */ asmlinkage long sys32_setreuid (compat_uid_t ruid,compat_uid_t euid)
Index: linux-2.6-cvs/include/asm-ia64/ia32.h
===================================================================
RCS file: /home/adsharma/disk2/cvs/linux-2.5/include/asm-ia64/ia32.h,v retrieving revision 1.22
include/asm-ia64/ia32.h +1 -1
@@ -6,7 +6,7 @@#include <asm/ptrace.h> #include <asm/signal.h> -#define IA32_NR_syscalls 283/* length of syscall table */ +#define IA32_NR_syscalls 285/* length of syscall table */ #define IA32_PAGE_SHIFT 12/* 4KB pages */ #ifndef __ASSEMBLY__