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);
}
--
⑨