From c0a5b44bc8261dec6d4ffaadb244ecbff962719b Mon Sep 17 00:00:00 2001 From: dzwdz Date: Wed, 18 Aug 2021 20:23:59 +0200 Subject: await() 1: wait for child to die, without message passing The length is a int, because the syscall will have a signed output. A negative return value will mean an error (such as when it gets called by a childless process). --- src/kernel/syscalls.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/kernel/syscalls.h') diff --git a/src/kernel/syscalls.h b/src/kernel/syscalls.h index d3ad2a8..a986a33 100644 --- a/src/kernel/syscalls.h +++ b/src/kernel/syscalls.h @@ -5,6 +5,7 @@ enum { // idc about stable syscall numbers just yet _SYSCALL_EXIT, + _SYSCALL_AWAIT, _SYSCALL_FORK, _SYSCALL_DEBUGLOG @@ -15,6 +16,11 @@ enum { */ _Noreturn void _syscall_exit(const char *msg, size_t len); +/** Waits for a child to exit, putting its exit message into *buf. + * @return the length of the message + */ +int _syscall_await(char *buf, int *len); + /** Creates a copy of the current process, and executes it. * All user memory pages get copied too. * @return 0 in the child, a meaningless positive value in the parent. -- cgit v1.2.3