[git commit] wait4.c: provide hidden __wait4_nocancel independent of any guards

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Fri Jun 15 12:00:40 UTC 2012


commit: http://git.uclibc.org/uClibc/commit/?id=a92060fe161073a41a3b73e8533d65125f84e3a8
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

Correct wait4 guard (it is only __USE_BSD)
wait3, system: use __wait4_nocancel

Signed-off-by: Peter S. Mazinger <ps.m at gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 include/sys/wait.h                |    5 ++++-
 libc/stdlib/system.c              |    2 +-
 libc/sysdeps/linux/common/wait3.c |   16 ++++------------
 libc/sysdeps/linux/common/wait4.c |   16 +++++++---------
 4 files changed, 16 insertions(+), 23 deletions(-)

diff --git a/include/sys/wait.h b/include/sys/wait.h
index 4beb3e2..b09c28d 100644
--- a/include/sys/wait.h
+++ b/include/sys/wait.h
@@ -171,9 +171,12 @@ extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options,
 /* PID is like waitpid.  Other args are like wait3.  */
 extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options,
 		      struct rusage *__usage) __THROW;
-libc_hidden_proto(wait4)
 #endif /* Use BSD.  */
 
+#ifdef _LIBC
+extern __pid_t __wait4_nocancel(__pid_t, __WAIT_STATUS, int, struct rusage *) attribute_hidden;
+#endif
+
 
 __END_DECLS
 
diff --git a/libc/stdlib/system.c b/libc/stdlib/system.c
index ec25ead..151a229 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 0d480ec..a4391fd 100644
--- a/libc/sysdeps/linux/common/wait3.c
+++ b/libc/sysdeps/linux/common/wait3.c
@@ -5,20 +5,12 @@
  */
 
 #include <sys/syscall.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/resource.h>
 
-#if defined __USE_BSD
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+# include <sys/wait.h>
 
-
-/* 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 dceab41..b7952ad 100644
--- a/libc/sysdeps/linux/common/wait4.c
+++ b/libc/sysdeps/linux/common/wait4.c
@@ -8,18 +8,16 @@
  */
 
 #include <sys/syscall.h>
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 #include <sys/wait.h>
-#include <sys/resource.h>
 
+# 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


More information about the uClibc-cvs mailing list