From 613b0fabf06d3a06c44da422ea5fef9b1d011729 Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Thu, 21 Apr 2011 23:08:11 +0200 Subject: wait.c: use cancel.h Use __wait4_nocancel, since wait4 is not available all the time Signed-off-by: Peter S. Mazinger Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/wait.c | 38 ++++---------------------------------- 1 file changed, 4 insertions(+), 34 deletions(-) (limited to 'libc/sysdeps/linux') diff --git a/libc/sysdeps/linux/common/wait.c b/libc/sysdeps/linux/common/wait.c index 9b529eb21..df4005839 100644 --- a/libc/sysdeps/linux/common/wait.c +++ b/libc/sysdeps/linux/common/wait.c @@ -4,41 +4,11 @@ * * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -#include -#include -#include #include -#include +#include -extern __typeof(wait) __libc_wait; -/* Wait for a child to die. When one does, put its status in *STAT_LOC - * and return its process ID. For errors, return (pid_t) -1. */ -#ifdef __UCLIBC_HAS_THREADS_NATIVE__ -#include -#include - -pid_t attribute_hidden -__libc_wait (__WAIT_STATUS_DEFN stat_loc) -{ - if (SINGLE_THREAD_P) - return INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0, - (struct rusage *) NULL); - - int oldtype = LIBC_CANCEL_ASYNC (); - - pid_t result = INLINE_SYSCALL (wait4, 4, WAIT_ANY, stat_loc, 0, - (struct rusage *) NULL); - - LIBC_CANCEL_RESET (oldtype); - - return result; -} -#else -/* Wait for a child to die. When one does, put its status in *STAT_LOC - * and return its process ID. For errors, return (pid_t) -1. */ -__pid_t __libc_wait (__WAIT_STATUS_DEFN stat_loc) +static pid_t __NC(wait)(__WAIT_STATUS_DEFN stat_loc) { - return wait4 (WAIT_ANY, stat_loc, 0, (struct rusage *) NULL); + return __wait4_nocancel(WAIT_ANY, stat_loc, 0, (struct rusage *)NULL); } -#endif -weak_alias(__libc_wait,wait) +CANCELLABLE_SYSCALL(pid_t, wait, (__WAIT_STATUS_DEFN stat_loc), (stat_loc)) -- cgit v1.2.3