aboutsummaryrefslogtreecommitdiff
path: root/mi.wait.h
diff options
context:
space:
mode:
Diffstat (limited to 'mi.wait.h')
-rw-r--r--mi.wait.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/mi.wait.h b/mi.wait.h
new file mode 100644
index 000000000000..205ac6812df6
--- /dev/null
+++ b/mi.wait.h
@@ -0,0 +1,44 @@
+/* The <sys/wait.h> header contains macros related to wait(). The value
+ * returned by wait() and waitpid() depends on whether the process
+ * terminated by an exit() call, was killed by a signal, or was stopped
+ * due to job control, as follows:
+ *
+ * High byte Low byte
+ * +---------------------+
+ * exit(status) | status | 0 |
+ * +---------------------+
+ * killed by signal | 0 | signal |
+ * +---------------------+
+ * stopped (job control) | signal | 0177 |
+ * +---------------------+
+ */
+
+#ifndef _WAIT_H
+#define _WAIT_H
+
+#ifndef _TYPES_H /* not quite right */
+#include <sys/types.h>
+#endif
+
+#define __LOW(v) ((v) & 0377)
+#define __HIGH(v) (((v) >> 8) & 0377)
+
+#define WNOHANG 1 /* do not wait for child to exit */
+#define WUNTRACED 2 /* for job control; not implemented */
+
+#define WIFEXITED(s) (__LOW(s) == 0) /* normal exit */
+#define WEXITSTATUS(s) (__HIGH(s)) /* exit status */
+#define WTERMSIG(s) (__LOW(s) & 0177) /* sig value */
+#define WIFSIGNALED(s) ((((unsigned int)(s)-1) & 0xFFFF) < 0xFF) /* signaled */
+#define WIFSTOPPED(s) (__LOW(s) == 0177) /* stopped */
+#define WSTOPSIG(s) (__HIGH(s) & 0377) /* stop signal */
+
+/* Function Prototypes. */
+#ifndef _ANSI_H
+#include <ansi.h>
+#endif
+
+_PROTOTYPE( pid_t wait, (int *_stat_loc) );
+_PROTOTYPE( pid_t waitpid, (pid_t _pid, int *_stat_loc, int _options) );
+
+#endif /* _WAIT_H */