1 #pragma once
2 
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6 
7 #include <features.h>
8 
9 #define __NEED_pid_t
10 #define __NEED_id_t
11 #include <bits/alltypes.h>
12 
13 typedef enum { P_ALL = 0,
14                P_PID = 1,
15                P_PGID = 2 } idtype_t;
16 
17 pid_t wait(int*);
18 pid_t waitpid(pid_t, int*, int);
19 
20 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
21     defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
22 #include <signal.h>
23 int waitid(idtype_t, id_t, siginfo_t*, int);
24 #endif
25 
26 #define WNOHANG 1
27 #define WUNTRACED 2
28 
29 #define WSTOPPED 2
30 #define WEXITED 4
31 #define WCONTINUED 8
32 #define WNOWAIT 0x1000000
33 
34 #define WEXITSTATUS(s) (((s)&0xff00) >> 8)
35 #define WTERMSIG(s) ((s)&0x7f)
36 #define WSTOPSIG(s) WEXITSTATUS(s)
37 #define WCOREDUMP(s) ((s)&0x80)
38 #define WIFEXITED(s) (!WTERMSIG(s))
39 #define WIFSTOPPED(s) ((short)((((s)&0xffff) * 0x10001) >> 8) > 0x7f00)
40 #define WIFSIGNALED(s) (((s)&0xffff) - 1U < 0xffu)
41 #define WIFCONTINUED(s) ((s) == 0xffff)
42 
43 #ifdef __cplusplus
44 }
45 #endif
46