aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2022-10-14 15:33:00 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2022-10-14 15:33:00 +0300
commit08619630e9c7b638354323b443937701811b11d4 (patch)
tree28d1d290166eccffbe70dfffaa68ce845c842c77 /include
parent0bd3518117ad29ffc91c7967068abc9948cc4885 (diff)
downloadkmi-08619630e9c7b638354323b443937701811b11d4.tar.gz
kmi-08619630e9c7b638354323b443937701811b11d4.zip
add spawn syscall
+ Prefer over unixy fork/exec for speed since I don't want to support cow. Shell redirection should be done with env server and cooperating libc.
Diffstat (limited to 'include')
-rw-r--r--include/apos/syscalls.h3
-rw-r--r--include/apos/uapi.h15
2 files changed, 18 insertions, 0 deletions
diff --git a/include/apos/syscalls.h b/include/apos/syscalls.h
index 5a3f2eb..a5b7e18 100644
--- a/include/apos/syscalls.h
+++ b/include/apos/syscalls.h
@@ -95,6 +95,9 @@ enum {
/** Execute new binary in process space. */
SYS_EXEC,
+ /** Execute new binary in new process space. */
+ SYS_SPAWN,
+
/** Kill thread. */
SYS_KILL,
diff --git a/include/apos/uapi.h b/include/apos/uapi.h
index cca728b..02e8816 100644
--- a/include/apos/uapi.h
+++ b/include/apos/uapi.h
@@ -535,6 +535,21 @@ SYSCALL_DECLARE0(fork);
SYSCALL_DECLARE2(exec, bin, interp);
/**
+ * Spawn binary syscall. Try to prefer over unixy fork/exec.
+ *
+ * Executes a new binary in new process space.
+ *
+ * @param bin Address of binary.
+ * @param interp Optional address of interpreter.
+ * @param c Unused.
+ * @param d Unused.
+ * @param e Unused.
+ * @return \ref OK and 0.
+ * \todo Check other return codes.
+ */
+SYSCALL_DECLARE2(spawn, bin, interp);
+
+/**
* Kill syscall.
*
* @param tid Thread ID to kill. 0 if self.