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