From 84fa0102c6906252999967925f32098ab6d5a259 Mon Sep 17 00:00:00 2001
From: dzwdz
Date: Sun, 11 Jun 2023 19:17:39 +0200
Subject: kernel: replace await with wait2, roughly compatible with POSIX

dash works now :^)))
---
 src/user/lib/syswait.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

(limited to 'src/user/lib/syswait.c')

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;
 }
-- 
cgit v1.2.3