about summary refs log tree commit diff
path: root/posix/sys
diff options
context:
space:
mode:
Diffstat (limited to 'posix/sys')
-rw-r--r--posix/sys/types.h4
-rw-r--r--posix/sys/wait.h25
2 files changed, 29 insertions, 0 deletions
diff --git a/posix/sys/types.h b/posix/sys/types.h
index ab28d39aaf..d48e0d23eb 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -81,6 +81,10 @@ typedef __pid_t pid_t;
 # define pid_t pid_t
 #endif
 
+#if defined __USE_SVID || defined __USE_XOPEN
+typedef __id_t id_t;
+#endif
+
 #ifndef ssize_t
 typedef __ssize_t ssize_t;
 # define ssize_t ssize_t
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index e931405ecb..e663f41e05 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -89,6 +89,16 @@ typedef union
 # define W_STOPCODE(sig)	__W_STOPCODE(sig)
 #endif
 
+/* The following values are used by the `waitid' function.  */
+#if defined __USE_SVID || defined __USE_XOPEN
+typedef enum
+{
+  P_ALL,		/* Wait for any child.  */
+  P_PID,		/* Wait for specified process.  */
+  P_PGID		/* Wait for members of process group.  */
+} idtype_t;
+#endif
+
 
 /* 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.  */
@@ -118,6 +128,21 @@ extern __pid_t __waitpid __P ((__pid_t __pid, int *__stat_loc,
 extern __pid_t waitpid __P ((__pid_t __pid, int *__stat_loc,
 			     int __options));
 
+#if defined __USE_SVID || defined __USE_XOPEN
+# define __need_siginfo_t
+# include <bits/siginfo.h>
+/* Wait for a childing matching IDTYPE and ID to change the status and
+   place appropriate information in *INFOP.
+   If IDTYPE is P_PID, match any process whose process ID is ID.
+   If IDTYPE is P_PGID, match any process whose process group is ID.
+   If IDTYPE is P_ALL, match any process.
+   If the WNOHANG bit is set in OPTIONS, and that child
+   is not already dead, clear *INFOP and return 0.  If successful, store
+   exit code and status in *INFOP.  */
+extern int waitid __P ((idtype_t __idtype, __id_t __id, siginfo_t *__infop,
+			int __options));
+#endif
+
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 /* This being here makes the prototypes valid whether or not
    we have already included <sys/resource.h> to define `struct rusage'.  */