xref: /minix3/minix/lib/libc/sys/wait4.c (revision 29346ab0430c05d7b81aa329f371aa4eaf0ded06)
1*29346ab0SDavid van Moolenbroek #include <sys/cdefs.h>
2*29346ab0SDavid van Moolenbroek #include <lib.h>
3*29346ab0SDavid van Moolenbroek #include "namespace.h"
4*29346ab0SDavid van Moolenbroek 
5*29346ab0SDavid van Moolenbroek #include <string.h>
6*29346ab0SDavid van Moolenbroek #include <sys/wait.h>
7*29346ab0SDavid van Moolenbroek 
8*29346ab0SDavid van Moolenbroek #ifdef __weak_alias
__weak_alias(wait4,__wait450)9*29346ab0SDavid van Moolenbroek __weak_alias(wait4, __wait450)
10*29346ab0SDavid van Moolenbroek #endif
11*29346ab0SDavid van Moolenbroek 
12*29346ab0SDavid van Moolenbroek pid_t
13*29346ab0SDavid van Moolenbroek wait4(pid_t pid, int * status, int options, struct rusage * rusage)
14*29346ab0SDavid van Moolenbroek {
15*29346ab0SDavid van Moolenbroek 	message m;
16*29346ab0SDavid van Moolenbroek 
17*29346ab0SDavid van Moolenbroek 	memset(&m, 0, sizeof(m));
18*29346ab0SDavid van Moolenbroek 	m.m_lc_pm_wait4.pid = pid;
19*29346ab0SDavid van Moolenbroek 	m.m_lc_pm_wait4.options = options;
20*29346ab0SDavid van Moolenbroek 	m.m_lc_pm_wait4.addr = (vir_bytes)rusage;
21*29346ab0SDavid van Moolenbroek 
22*29346ab0SDavid van Moolenbroek 	if (_syscall(PM_PROC_NR, PM_WAIT4, &m) < 0) return(-1);
23*29346ab0SDavid van Moolenbroek 
24*29346ab0SDavid van Moolenbroek 	if (status != NULL) *status = m.m_pm_lc_wait4.status;
25*29346ab0SDavid van Moolenbroek 	return m.m_type;
26*29346ab0SDavid van Moolenbroek }
27