#ifndef _SYS_WAIT_H
#define _SYS_WAIT_H
#include <sys/feature_tests.h>
#include <sys/types.h>
#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
#include <sys/resource.h>
#include <sys/siginfo.h>
#include <sys/procset.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define WUNTRACED 0004
#define WNOHANG 0100
#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
#define WEXITED 0001
#define WTRAPPED 0002
#define WSTOPPED WUNTRACED
#define WCONTINUED 0010
#define WNOWAIT 0200
#define WOPTMASK (WEXITED|WTRAPPED|WSTOPPED|WCONTINUED|WNOHANG|WNOWAIT)
#endif
#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
#define WSTOPFLG 0177
#define WCONTFLG 0177777
#define WCOREFLG 0200
#define WSIGMASK 0177
#define WLOBYTE(stat) ((int)((stat)&0377))
#define WHIBYTE(stat) ((int)(((stat)>>8)&0377))
#define WWORD(stat) ((int)((stat))&0177777)
#define WIFCONTINUED(stat) (WWORD(stat) == WCONTFLG)
#define WCOREDUMP(stat) ((stat)&WCOREFLG)
#endif
#define WIFEXITED(stat) ((int)((stat)&0xFF) == 0)
#define WIFSIGNALED(stat) ((int)((stat)&0xFF) > 0 && \
(int)((stat)&0xFF00) == 0)
#define WIFSTOPPED(stat) ((int)((stat)&0xFF) == 0177 && \
(int)((stat)&0xFF00) != 0)
#define WEXITSTATUS(stat) ((int)(((stat)>>8)&0xFF))
#define WTERMSIG(stat) ((int)((stat)&0x7F))
#define WSTOPSIG(stat) ((int)(((stat)>>8)&0xFF))
#if !defined(_KERNEL)
extern pid_t wait(int *);
extern pid_t waitpid(pid_t, int *, int);
#if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
extern int waitid(idtype_t, id_t, siginfo_t *, int);
#if !defined(_XPG6) || defined(__EXTENSIONS__)
extern pid_t wait3(int *, int, struct rusage *);
#endif
#endif
#if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
extern pid_t wait4(pid_t, int *, int, struct rusage *);
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif