static void dummy_0()
{
}
-weak_alias(dummy_0, __rsyscall_lock);
-weak_alias(dummy_0, __rsyscall_unlock);
+weak_alias(dummy_0, __synccall_lock);
+weak_alias(dummy_0, __synccall_unlock);
weak_alias(dummy_0, __pthread_tsd_run_dtors);
#ifdef __pthread_unwind_next
longjmp((void *)cb->__next->__jb, 1);
}
- __lock(&self->exitlock);
-
__pthread_tsd_run_dtors();
+ __lock(&self->exitlock);
+
/* Mark this thread dead before decrementing count */
+ __lock(&self->killlock);
self->dead = 1;
+ a_store(&self->killlock, 0);
do n = libc.threads_minus_1;
while (n && a_cas(&libc.threads_minus_1, n, n-1)!=n);
new->tlsdesc[1] = (uintptr_t)new;
stack = (void *)((uintptr_t)new-1 & ~(uintptr_t)15);
- __rsyscall_lock();
+ __synccall_lock();
a_inc(&libc.threads_minus_1);
ret = __uniclone(stack, start, new);
- __rsyscall_unlock();
+ __synccall_unlock();
if (ret < 0) {
a_dec(&libc.threads_minus_1);