1#pragma once
2
3#ifdef __cplusplus
4extern "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
13typedef enum { P_ALL = 0,
14               P_PID = 1,
15               P_PGID = 2 } idtype_t;
16
17pid_t wait(int*);
18pid_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>
23int 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