From 6caac6e940ab79960b1c1ca0e5ed8f28aa49a3a9 Mon Sep 17 00:00:00 2001
From: dzwdz
Date: Sat, 20 Nov 2021 14:48:26 +0100
Subject: kernel: fs_wait returns a success val; the op type is put in the
 struct

---
 src/init/tar.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'src/init/tar.c')

diff --git a/src/init/tar.c b/src/init/tar.c
index b041a98..e0843e7 100644
--- a/src/init/tar.c
+++ b/src/init/tar.c
@@ -18,8 +18,8 @@ static const char *root_fakemeta = ""; /* see comment in tar_open */
 void tar_driver(void *base) {
 	static char buf[BUF_SIZE];
 	struct fs_wait_response res;
-	for (;;) {
-		switch (_syscall_fs_wait(buf, BUF_SIZE, &res)) {
+	while (!_syscall_fs_wait(buf, BUF_SIZE, &res)) {
+		switch (res.op) {
 			case VFSOP_OPEN:
 				_syscall_fs_respond(NULL, tar_open(buf, res.len, base, ~0));
 				break;
@@ -33,6 +33,7 @@ void tar_driver(void *base) {
 				break;
 		}
 	}
+	_syscall_exit(0);
 }
 
 static int tar_open(const char *path, int len, void *base, size_t base_len) {
-- 
cgit v1.2.3