1 /* FIXME: From sys/sysvi386/sys */ 2 #ifndef _WAIT_H 3 # define _WAIT_H 4 5 # define WNOHANG 1 6 # define WUNTRACED 2 7 8 /* 9 * Unlike the atrocity that BSD ended up using, we do not have a "union 10 * wait," although I could probably implement one. Given the code I 11 * sometimes end up porting, it might be a good thing. Anyway, the 12 * format of a stat thingy, filled in by the wait*() routines, is: 13 * struct { 14 * int filler:16; 15 * union { 16 * struct stopped { 17 * int signo:8; 18 * int o177:8; // will be 0177 19 * }; 20 * struct exited { 21 * int retval:8; 22 * int zero:8; // 0, obviously 8-) 23 * }; 24 * struct termed { 25 * int zero:8; // zeroes 26 * int corep:1; // was there a core file? 27 * int signo:7; // what?! Only 127 signals?! 28 * }; 29 * int value:16; 30 * }; 31 * }; 32 * 33 * Braver souls than I can turn that into a union wait, if desired. Ick. 34 */ 35 36 # define WIFEXITED(val) ((val)&0xff) 37 # define WEXITSTATUS(val) (((val)>>8)&0xff) 38 # define WIFSIGNALED(val) ((val) && !((val)&0xff)) 39 # define WTERMSIG(val) (((val)>>8)&0x7f) 40 # define WIFSTOPPED(val) (((val)&0xff)==0177) 41 # define WSTOPSIG(val) (((val)>>8)&0xff) 42 #endif /* _SYS_WAIT_H */ 43 44