From 08b258aeb96a6970b950eedc2dc2ab00b04011ee Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Thu, 21 Apr 2011 22:31:08 +0200 Subject: waitpid.c: provide __waitpid_nocancel, use cancel.h Use __wait4_nocancel since wait4 is not available all the time. Add a comment about not using waitpid syscall. Signed-off-by: Peter S. Mazinger Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/waitpid.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) (limited to 'libc/sysdeps/linux/common/waitpid.c') diff --git a/libc/sysdeps/linux/common/waitpid.c b/libc/sysdeps/linux/common/waitpid.c index d0437194d..2309d5bb8 100644 --- a/libc/sysdeps/linux/common/waitpid.c +++ b/libc/sysdeps/linux/common/waitpid.c @@ -6,32 +6,16 @@ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -#include -#include #include -#include +#include -#ifdef __UCLIBC_HAS_THREADS_NATIVE__ -#include "sysdep-cancel.h" -#else -#define SINGLE_THREAD_P 1 -#endif - -libc_hidden_proto(wait4) - -extern __typeof(waitpid) __libc_waitpid; -__pid_t __libc_waitpid(__pid_t pid, int *wait_stat, int options) +pid_t __NC(waitpid)(pid_t pid, int *wait_stat, int options) { - if (SINGLE_THREAD_P) - return wait4(pid, wait_stat, options, NULL); - -#ifdef __UCLIBC_HAS_THREADS_NATIVE__ - int oldtype = LIBC_CANCEL_ASYNC (); - int result = wait4(pid, wait_stat, options, NULL); - LIBC_CANCEL_RESET (oldtype); - return result; +#if 1 /* kernel/exit.c says to avoid waitpid syscall */ + return __wait4_nocancel(pid, wait_stat, options, NULL); +#else + return INLINE_SYSCALL(waitpid, 3, pid, wait_stat, options); #endif } -libc_hidden_proto(waitpid) -weak_alias(__libc_waitpid,waitpid) -libc_hidden_weak(waitpid) +CANCELLABLE_SYSCALL(pid_t, waitpid, (pid_t pid, int *wait_stat, int options), (pid, wait_stat, options)) +lt_libc_hidden(waitpid) -- cgit v1.2.3