diff options
author | dzwdz | 2023-06-11 19:17:39 +0200 |
---|---|---|
committer | dzwdz | 2023-06-11 19:17:39 +0200 |
commit | 84fa0102c6906252999967925f32098ab6d5a259 (patch) | |
tree | 00bd8c98a68e4882e2f42510c9c55932ef855ba3 /src/user/lib/syswait.c | |
parent | ff154205e1671e11ed8566740c1cefaad79c2512 (diff) |
kernel: replace await with wait2, roughly compatible with POSIX
dash works now :^)))
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; } |