diff options
Diffstat (limited to 'libc')
-rw-r--r-- | libc/unistd/daemon.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libc/unistd/daemon.c b/libc/unistd/daemon.c index 3dcd995d2..741672ec0 100644 --- a/libc/unistd/daemon.c +++ b/libc/unistd/daemon.c @@ -55,12 +55,14 @@ /* use clone() to get fork() like behavior here -- we just want to disassociate * from the controlling terminal */ -static inline pid_t _fork_parent(void) +static inline attribute_optimize("O3") +pid_t _fork_parent(void) { - register unsigned long ret = INTERNAL_SYSCALL(clone, wtf, 2, CLONE_VM, 0); - if (ret != -1 && ret != 0) + INTERNAL_SYSCALL_DECL(err); + register long ret = INTERNAL_SYSCALL(clone, err, 2, CLONE_VM, 0); + if (ret > 0) /* parent needs to die now w/out touching stack */ - INTERNAL_SYSCALL(exit, wtf, 0); + INTERNAL_SYSCALL(exit, err, 1, 0); return ret; } static inline pid_t fork_parent(void) |