From 868f414152de3f73b7e6ba5b4b627b95252f2afc Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 20 Apr 2025 16:43:07 -0700 Subject: [PATCH] add vfork --- mod.zig | 8 +++++++- test.zig | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mod.zig b/mod.zig index dbdc68abbe550874933c967094c02fbb966ffd41..adf227638c0a0a3688ac5faeccbcf3e96459ea16 100644 --- a/mod.zig +++ b/mod.zig @@ -345,7 +345,13 @@ pub fn fork() errno.Error!pid_t { // vfork // pid_t vfork(void); // asmlinkage long sys_vfork(void); -pub const vfork = @compileError("TODO: vfork"); +pub fn vfork() errno.Error!pid_t { + const r = syscall0(.vfork); + return switch (_errno(r)) { + .ok => @intCast(r), + _ => |c| errno.errorFromInt(@intFromEnum(c)), + }; +} // execve // int execve(const char *pathname, char *const _Nullable argv[], char *const _Nullable envp[]); diff --git a/test.zig b/test.zig index 022f3355d132fff459230dc296eec86ed0520e19..9c78239ffb47f51b2e41fe63fa5fb337489c380d 100644 --- a/test.zig +++ b/test.zig @@ -11,4 +11,5 @@ test { _ = &linux.pause; _ = &linux.getpid; _ = &linux.fork; + _ = &linux.vfork; } -- 2.54.0