X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fthread%2Fpthread_self.c;h=aed4b5f1ba1a759394c2913d025df4048c2e2908;hb=b17c75a4d539d7ec5b81cc7ce7ce6b065a87e7a6;hp=a93d8129353103d5b0a63be15636bbe7b1d8a558;hpb=8431d7972fd9be0fdcaff8516316d748e81724bb;p=musl diff --git a/src/thread/pthread_self.c b/src/thread/pthread_self.c index a93d8129..aed4b5f1 100644 --- a/src/thread/pthread_self.c +++ b/src/thread/pthread_self.c @@ -9,14 +9,16 @@ weak_alias(dummy, __pthread_tsd_main); static int init_main_thread() { __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, - SIGPT_SET, 0, __SYSCALL_SSLEN); - if (__set_thread_area(main_thread) < 0) return -1; + SIGPT_SET, 0, _NSIG/8); + if (__set_thread_area(TP_ADJ(main_thread)) < 0) return -1; main_thread->canceldisable = libc.canceldisable; main_thread->tsd = (void **)__pthread_tsd_main; main_thread->errno_ptr = __errno_location(); main_thread->self = main_thread; main_thread->tid = main_thread->pid = __syscall(SYS_set_tid_address, &main_thread->tid); + if (!main_thread->dtv) + main_thread->dtv = (void *)dummy; libc.main_thread = main_thread; return 0; }