diff options
Diffstat (limited to 'posix')
-rw-r--r-- | posix/Makefile | 2 | ||||
-rw-r--r-- | posix/sys/types.h | 4 | ||||
-rw-r--r-- | posix/sys/wait.h | 25 |
3 files changed, 30 insertions, 1 deletions
diff --git a/posix/Makefile b/posix/Makefile index 3fbacdc918..b8fbbd20bd 100644 --- a/posix/Makefile +++ b/posix/Makefile @@ -34,7 +34,7 @@ distribute := confstr.h TESTS TESTS2C.sed testcases.h \ routines := \ uname \ times \ - wait waitpid wait3 wait4 \ + wait waitpid wait3 wait4 waitid \ alarm sleep pause nanosleep \ fork vfork _exit \ execve fexecve execv execle execl execvp execlp \ 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'. */ |