freebsd-skq/contrib/tcsh/mi.wait.h
2009-07-10 21:00:38 +00:00

45 lines
1.4 KiB
C

/* 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 */