From a92060fe161073a41a3b73e8533d65125f84e3a8 Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Sun, 17 Apr 2011 15:45:46 +0200 Subject: wait4.c: provide hidden __wait4_nocancel independent of any guards Correct wait4 guard (it is only __USE_BSD) wait3, system: use __wait4_nocancel Signed-off-by: Peter S. Mazinger Signed-off-by: Bernhard Reutner-Fischer --- libc/stdlib/system.c | 2 +- libc/sysdeps/linux/common/wait3.c | 16 ++++------------ libc/sysdeps/linux/common/wait4.c | 16 +++++++--------- 3 files changed, 12 insertions(+), 22 deletions(-) (limited to 'libc') diff --git a/libc/stdlib/system.c b/libc/stdlib/system.c index ec25ead73..151a229c6 100644 --- a/libc/stdlib/system.c +++ b/libc/stdlib/system.c @@ -61,7 +61,7 @@ int __libc_system(const char *command) __printf("Waiting for child %d\n", pid); #endif - if (wait4(pid, &wait_val, 0, 0) == -1) + if (__wait4_nocancel(pid, &wait_val, 0, 0) == -1) wait_val = -1; out: diff --git a/libc/sysdeps/linux/common/wait3.c b/libc/sysdeps/linux/common/wait3.c index 0d480ec54..a4391fd18 100644 --- a/libc/sysdeps/linux/common/wait3.c +++ b/libc/sysdeps/linux/common/wait3.c @@ -5,20 +5,12 @@ */ #include -#include -#include -#include -#if defined __USE_BSD +#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED +# include - -/* Wait for a child to exit. When one does, put its status in *STAT_LOC and - * return its process ID. For errors return (pid_t) -1. If USAGE is not nil, - * store information about the child's resource usage (as a `struct rusage') - * there. If the WUNTRACED bit is set in OPTIONS, return status for stopped - * children; otherwise don't. */ -pid_t wait3 (__WAIT_STATUS stat_loc, int options, struct rusage * usage) +pid_t wait3(__WAIT_STATUS stat_loc, int options, struct rusage *usage) { - return wait4 (WAIT_ANY, stat_loc, options, usage); + return __wait4_nocancel(WAIT_ANY, stat_loc, options, usage); } #endif diff --git a/libc/sysdeps/linux/common/wait4.c b/libc/sysdeps/linux/common/wait4.c index dceab41b6..b7952ad81 100644 --- a/libc/sysdeps/linux/common/wait4.c +++ b/libc/sysdeps/linux/common/wait4.c @@ -8,18 +8,16 @@ */ #include -#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED #include -#include +# define __NR___syscall_wait4 __NR_wait4 +static __always_inline _syscall4(int, __syscall_wait4, __kernel_pid_t, pid, + int *, status, int, opts, struct rusage *, rusage) -#define __NR___syscall_wait4 __NR_wait4 -static __inline__ _syscall4(int, __syscall_wait4, __kernel_pid_t, pid, - int *, status, int, opts, struct rusage *, rusage) - -pid_t wait4(pid_t pid, int *status, int opts, struct rusage *rusage) +pid_t __wait4_nocancel(pid_t pid, int *status, int opts, struct rusage *rusage) { - return (__syscall_wait4(pid, status, opts, rusage)); + return __syscall_wait4(pid, status, opts, rusage); } -libc_hidden_def(wait4) +#ifdef __USE_BSD +strong_alias(__wait4_nocancel,wait4) #endif -- cgit v1.2.3