summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <kraj@mvista.com>2008-07-11 07:59:33 +0000
committerKhem Raj <kraj@mvista.com>2008-07-11 07:59:33 +0000
commit8b8e6c52edc6baefa70abac71e6e4d637e188698 (patch)
tree5be81c32de5e642991ac92943aa3ab5660dfd0fe
parentc73fd216d38328cfedd919d0f2b6c6254bc0bf1a (diff)
downloaduClibc-alpine-8b8e6c52edc6baefa70abac71e6e4d637e188698.tar.bz2
uClibc-alpine-8b8e6c52edc6baefa70abac71e6e4d637e188698.tar.xz
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Use wait4 for waitpid syscall.
-rw-r--r--libc/sysdeps/linux/common/waitpid.c31
1 files changed, 8 insertions, 23 deletions
diff --git a/libc/sysdeps/linux/common/waitpid.c b/libc/sysdeps/linux/common/waitpid.c
index 902a39496..d0437194d 100644
--- a/libc/sysdeps/linux/common/waitpid.c
+++ b/libc/sysdeps/linux/common/waitpid.c
@@ -10,43 +10,28 @@
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/resource.h>
+
#ifdef __UCLIBC_HAS_THREADS_NATIVE__
-#include <errno.h>
-#include <sysdep-cancel.h>
+#include "sysdep-cancel.h"
#else
+#define SINGLE_THREAD_P 1
+#endif
libc_hidden_proto(wait4)
-#endif
extern __typeof(waitpid) __libc_waitpid;
__pid_t __libc_waitpid(__pid_t pid, int *wait_stat, int options)
{
-#ifdef __UCLIBC_HAS_THREADS_NATIVE__
if (SINGLE_THREAD_P)
- {
-#ifdef __NR_waitpid
- return INLINE_SYSCALL (waitpid, 3, pid, wait_stat, options);
-#else
- return INLINE_SYSCALL (wait4, 4, pid, wait_stat, options, NULL);
-#endif
- }
+ return wait4(pid, wait_stat, options, NULL);
+#ifdef __UCLIBC_HAS_THREADS_NATIVE__
int oldtype = LIBC_CANCEL_ASYNC ();
-
-#ifdef __NR_waitpid
- int result = INLINE_SYSCALL (waitpid, 3, pid, wait_stat, options);
-#else
- int result = INLINE_SYSCALL (wait4, 4, pid, wait_stat, options, NULL);
-#endif
-
+ int result = wait4(pid, wait_stat, options, NULL);
LIBC_CANCEL_RESET (oldtype);
-
return result;
-}
-#else
- return wait4(pid, wait_stat, options, NULL);
-}
#endif
+}
libc_hidden_proto(waitpid)
weak_alias(__libc_waitpid,waitpid)
libc_hidden_weak(waitpid)