13
/* A status looks like:
14
<2 bytes info> <2 bytes code>
16
<code> == 0, child has exited, info is the exit value
17
<code> == 1..7e, child has exited, info is the signal number.
18
<code> == 7f, child has stopped, info was the signal number.
19
<code> == 80, there was a core dump.
22
#define WIFEXITED(w) (((w) & 0xff) == 0)
23
#define WIFSIGNALED(w) (((w) & 0x7f) > 0 && (((w) & 0x7f) < 0x7f))
24
#define WIFSTOPPED(w) (((w) & 0xff) == 0x7f)
25
#define WEXITSTATUS(w) (((w) >> 8) & 0xff)
26
#define WTERMSIG(w) ((w) & 0x7f)
27
#define WSTOPSIG WEXITSTATUS
13
#include <bits/alltypes.h>
29
21
pid_t wait (int *);
30
pid_t waitpid (pid_t, int *, int);
32
/* Provide prototypes for most of the _<systemcall> names that are
33
provided in newlib for some compilers. */
22
int waitid (idtype_t, id_t, siginfo_t *, int);
23
pid_t waitpid (pid_t, int *, int );
25
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
26
#include <sys/resource.h>
27
pid_t wait3 (int *, int, struct rusage *);
28
pid_t wait4 (pid_t, int *, int, struct rusage *);
37
#define WNOWAIT 0x1000000
39
#define __WNOTHREAD 0x20000000
40
#define __WALL 0x40000000
41
#define __WCLONE 0x80000000
43
#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
44
#define WTERMSIG(s) ((s) & 0x7f)
45
#define WSTOPSIG(s) WEXITSTATUS(s)
46
#define WCOREDUMP(s) ((s) & 0x80)
47
#define WIFEXITED(s) (!WTERMSIG(s))
48
#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00)
49
#define WIFSIGNALED(s) (((s)&0xffff)-1 < 0xffu)
50
#define WIFCONTINUED(s) ((s) == 0xffff)