diff options
Diffstat (limited to 'src/user/lib/syswait.c')
-rw-r--r-- | src/user/lib/syswait.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/user/lib/syswait.c b/src/user/lib/syswait.c index 6389cb2..ce80c7b 100644 --- a/src/user/lib/syswait.c +++ b/src/user/lib/syswait.c @@ -1,8 +1,22 @@ #include <bits/panic.h> +#include <camellia.h> +#include <camellia/syscalls.h> +#include <errno.h> #include <sys/resource.h> #include <sys/wait.h> pid_t wait3(int *wstatus, int opts, struct rusage *rusage) { - (void)wstatus; (void)opts; (void)rusage; - __libc_panic("unimplemented"); + struct sys_wait2 res; + if (opts || rusage) { + __libc_panic("unimplemented"); + } + pid_t ret = _sys_wait2(-1, 0, &res); + if (ret < 0) { + errno = -ret; + return -1; + } + if (wstatus) { + *wstatus = res.status & 0xFF; + } + return ret; } |