2 * Copyright 1989 Sun Microsystems, Inc. All rights reserved.
3 * Use is subject to license terms.
7 * Copyright (c) 1982, 1986 Regents of the University of California.
8 * All rights reserved. The Berkeley software License Agreement
9 * specifies the terms and conditions for redistribution.
15 #pragma ident "%Z%%M% %I% %E% SMI"
18 * This file holds definitions relevant to the wait system call.
19 * Some of the options here are available only through the ``wait3''
20 * entry point; the old entry point with one argument has more fixed
21 * semantics, never returning status of unstopped children, hanging until
22 * a process terminates if any are outstanding, and never returns
23 * detailed information about process resource utilization (<vtimes.h>).
28 #define w_termsig __w_termsig
29 #define w_coredump __w_coredump
30 #define w_retcode __w_retcode
31 #define w_stopval __w_stopval
32 #define w_stopsig __w_stopsig
33 #define WSTOPPED _WSTOPPED
34 #endif /* !_POSIX_SOURCE */
37 * Structure of the information in the first word returned by both
38 * wait and wait3. If w_stopval==WSTOPPED, then the second structure
39 * describes the information returned, else the first. See WUNTRACED below.
42 int w_status
; /* used in syscall */
44 * Terminated process status.
47 unsigned short w_Fill1
:16; /* high 16 bits unused */
48 unsigned short w_Retcode
:8; /* exit code if w_termsig==0 */
49 unsigned short w_Coredump
:1; /* core dump indicator */
50 unsigned short w_Termsig
:7; /* termination signal */
53 * Stopped process status. Returned
54 * only for traced children unless requested
55 * with the WUNTRACED option bit.
58 unsigned short w_Fill2
:16; /* high 16 bits unused */
59 unsigned short w_Stopsig
:8; /* signal that stopped us */
60 unsigned short w_Stopval
:8; /* == W_STOPPED if stopped */
63 #define __w_termsig w_T.w_Termsig
64 #define __w_coredump w_T.w_Coredump
65 #define __w_retcode w_T.w_Retcode
66 #define __w_stopval w_S.w_Stopval
67 #define __w_stopsig w_S.w_Stopsig
68 #define _WSTOPPED 0177 /* value of s.stopval if process is stopped */
71 * Option bits for the second argument of wait3. WNOHANG causes the
72 * wait to not hang if there are no stopped or terminated processes, rather
73 * returning an error indication in this case (pid==0). WUNTRACED
74 * indicates that the caller should receive status about untraced children
75 * which stop due to signals. If children are stopped and a wait without
76 * this option is done, it is as though they were still running... nothing
77 * about them is returned.
79 #define WNOHANG 1 /* dont hang in wait */
80 #define WUNTRACED 2 /* tell about stopped, untraced children */
82 #define WIFSTOPPED(x) (((union __wait*)&(x))->__w_stopval == _WSTOPPED)
83 #define WIFSIGNALED(x) (((union __wait*)&(x))->__w_stopval != _WSTOPPED && \
84 ((union __wait*)&(x))->__w_termsig != 0)
85 #define WIFEXITED(x) (((union __wait*)&(x))->__w_stopval != _WSTOPPED && \
86 ((union __wait*)&(x))->__w_termsig == 0)
87 #define WEXITSTATUS(x) (((union __wait*)&(x))->__w_retcode)
88 #define WTERMSIG(x) (((union __wait*)&(x))->__w_termsig)
89 #define WSTOPSIG(x) (((union __wait*)&(x))->__w_stopsig)
91 #include <sys/stdtypes.h>
93 pid_t
wait(/* int *loc */);
94 pid_t
waitpid(/* pid_t pid, int *loc, int opts */);
96 #endif /* !__sys_wait_h */