#if !defined ISO && !defined ISO99 && !defined ISO11
#ifdef  POSIX
# define pid_t __pid_t
# define uid_t __uid_t
#endif

constant WNOHANG
constant WUNTRACED

macro WEXITSTATUS
# if !defined POSIX && !defined POSIX2008
macro WIFCONTINUED
# endif
macro WIFEXITED
macro WIFSIGNALED
macro WIFSTOPPED
macro WSTOPSIG
macro WTERMSIG

constant WEXITED
constant WSTOPPED
# if !defined POSIX && !defined POSIX2008
constant WCONTINUED
# endif
constant WNOHANG
constant WNOWAIT

#if !defined POSIX
type idtype_t

constant P_ALL
constant P_PID
constant P_PGID

type id_t
#endif

type siginfo_t

element siginfo_t int si_signo
element siginfo_t int si_errno
element siginfo_t int si_code
element siginfo_t pid_t si_pid
element siginfo_t uid_t si_uid
element siginfo_t {void*} si_addr
element siginfo_t int si_status
element siginfo_t long si_band
element siginfo_t {union sigval} si_value

#if !defined POSIX && !defined XPG3 && !defined XOPEN2K8 && !defined POSIX2008
type {struct rusage}

element {struct rusage} {struct timeval} ru_utime
element {struct rusage} {struct timeval} ru_stime
#endif

type pid_t

function pid_t wait (int*)
#if !defined POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008
function pid_t wait3 (int*, int, struct rusage*)
#endif
#if !defined POSIX
function int waitid (idtype_t, id_t, siginfo_t*, int)
#endif
function pid_t waitpid (pid_t, int*, int)

allow-header signal.h
allow-header sys/resource.h

allow si_*
allow W*
allow P_*
allow BUS_
allow CLD_
allow FPE_
allow ILL_
allow POLL_
allow SEGV_
allow SI_
allow TRAP_
allow *_t
#endif
