aboutsummaryrefslogtreecommitdiff
path: root/src/process
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 /src/process
parent0913560a3ffd4572d926b4f9bed3dbf3e6a1b3f0 (diff)
downloadmusl-e2915eeeea244d3818d5eb7532ed35c6cf43c8fd.zip
musl-e2915eeeea244d3818d5eb7532ed35c6cf43c8fd.tar.gz
musl-e2915eeeea244d3818d5eb7532ed35c6cf43c8fd.tar.bz2
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.
Diffstat (limited to 'src/process')
-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 012b7ca..07fb79e 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);