diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/process/_Fork.c | 11 | ||||
| -rw-r--r-- | src/process/fork.c | 13 | 
2 files changed, 15 insertions, 9 deletions
diff --git a/src/process/_Fork.c b/src/process/_Fork.c index 17fb87ad..1f41197c 100644 --- a/src/process/_Fork.c +++ b/src/process/_Fork.c @@ -1,23 +1,17 @@  #include <unistd.h> -#include <string.h>  #include <signal.h>  #include "syscall.h"  #include "libc.h"  #include "lock.h"  #include "pthread_impl.h" -static void dummy(int x) -{ -} - -weak_alias(dummy, __fork_handler); +static void dummy(int x) { }  weak_alias(dummy, __aio_atfork); -pid_t fork(void) +pid_t _Fork(void)  {  	pid_t ret;  	sigset_t set; -	__fork_handler(-1);  	__block_all_sigs(&set);  	__aio_atfork(-1);  	LOCK(__abort_lock); @@ -39,6 +33,5 @@ pid_t fork(void)  	UNLOCK(__abort_lock);  	__aio_atfork(!ret);  	__restore_sigs(&set); -	__fork_handler(!ret);  	return __syscall_ret(ret);  } diff --git a/src/process/fork.c b/src/process/fork.c new file mode 100644 index 00000000..a12da01a --- /dev/null +++ b/src/process/fork.c @@ -0,0 +1,13 @@ +#include <unistd.h> +#include "libc.h" + +static void dummy(int x) { } +weak_alias(dummy, __fork_handler); + +pid_t fork(void) +{ +	__fork_handler(-1); +	pid_t ret = _Fork(); +	__fork_handler(!ret); +	return ret; +}  | 
