shithub: drawcpu

Download patch

ref: 7ae756a098788e2787b604b2d757edd22dffe56b
parent: b527faa7af4f7198fd12acc67de845c0bb4c437f
author: halfwit <michaelmisch1985@gmail.com>
date: Sun Jan 25 08:28:29 EST 2026

Update wait/await to return early on no child processes

--- a/kern/syscall.c
+++ b/kern/syscall.c
@@ -711,13 +711,13 @@
 		if(!anamet) 
 			anamet = "";
 #ifdef DSYSCALL
-		print("sysmount: pid=%d, fd=%d, afd=%d, aname=%s\n", up->pid, fd, afd, anamet);
+		print("sysmount: pid=%d, fd=%d, afd=%d, aname=%s, oldt=%s\n", up->pid, fd, afd, anamet, oldt);
 #endif
 	} else {
 		anamet = nil;
 		copiedaname = 0;
 #ifdef DSYSCALL
-		print("sysmount: pid=%d, fd=%d, afd=%d\n", fd, afd, up->pid);
+		print("sysmount: pid=%d, fd=%d, afd=%d, oldt=%s\n", fd, afd, up->pid, oldt);
 #endif
 	}
 	up->R[0] = noteerr(mount(fd, afd, oldt, flag, anamet), 0);
@@ -823,6 +823,16 @@
 }
 
 static void
+_sys_wait(void)
+{
+	Waitmsg *w;
+
+	w = wait();
+	up->R[0] = w->pid;
+	free(w);
+}
+
+static void
 _sysremove(void)
 {
 	u32int file;
@@ -925,7 +935,7 @@
 		//[SEGFLUSH]		= _syssegflush,
 		[RENDEZVOUS]	= _sysrendezvous,
 		[UNMOUNT]		= _sysunmount,
-		//[_WAIT]			= _sys_wait,
+		[_WAIT]			= _sys_wait,
 		[SEMACQUIRE]	= _syssemacquire,
 		[SEMRELEASE]	= _syssemrelease,
 		[SEEK]			= _sysseek,
--- a/kern/wait.c
+++ b/kern/wait.c
@@ -35,7 +35,8 @@
 syswait(void)
 {
 	char buf[256];
-
+	if(up->nchild <= 0)
+		return 0;
 	return _wait(await(buf, sizeof buf-1), buf);
 }
 
@@ -42,5 +43,7 @@
 int
 sysawait(char *p, int n)
 {
+	if(up->nchild <= 0)
+		return -1;
 	return osawait(up, p, n);
 }
--