summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-04-12 17:52:14 -0400
committerRich Felker <dalias@aerifal.cx>2011-04-12 17:52:14 -0400
commite2915eeeea244d3818d5eb7532ed35c6cf43c8fd (patch)
tree9b4038abca8971234ef2d63d9cabef950c6229c7
parent0913560a3ffd4572d926b4f9bed3dbf3e6a1b3f0 (diff)
downloadmusl-e2915eeeea244d3818d5eb7532ed35c6cf43c8fd.tar.gz
speed up threaded fork
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.
-rw-r--r--src/process/fork.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/process/fork.c b/src/process/fork.c
index 012b7ca5..07fb79ed 100644
--- a/src/process/fork.c
+++ b/src/process/fork.c
@@ -10,8 +10,7 @@ pid_t fork(void)
ret = syscall(SYS_fork);
if (libc.lock && !ret) {
pthread_t self = __pthread_self();
- self->pid = syscall(SYS_getpid);
- self->tid = syscall(SYS_gettid);
+ self->tid = self->pid = syscall(SYS_getpid);
libc.threads_minus_1 = 0;
}
if (libc.fork_handler) libc.fork_handler(!ret);