mirror of
https://github.com/fluencelabs/musl
synced 2025-06-09 04:51:34 +00:00
after fork, we have a new process and the pid is equal to the tid of the new main thread. there is no need to make two separate syscalls to obtain the same number.
19 lines
395 B
C
19 lines
395 B
C
#include <unistd.h>
|
|
#include "syscall.h"
|
|
#include "libc.h"
|
|
#include "pthread_impl.h"
|
|
|
|
pid_t fork(void)
|
|
{
|
|
pid_t ret;
|
|
if (libc.fork_handler) libc.fork_handler(-1);
|
|
ret = syscall(SYS_fork);
|
|
if (libc.lock && !ret) {
|
|
pthread_t self = __pthread_self();
|
|
self->tid = self->pid = syscall(SYS_getpid);
|
|
libc.threads_minus_1 = 0;
|
|
}
|
|
if (libc.fork_handler) libc.fork_handler(!ret);
|
|
return ret;
|
|
}
|