diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/thread/synccall.c | 8 | 
1 files changed, 4 insertions, 4 deletions
| diff --git a/src/thread/synccall.c b/src/thread/synccall.c index 7c4f92bf..91ac5eb7 100644 --- a/src/thread/synccall.c +++ b/src/thread/synccall.c @@ -54,15 +54,15 @@ void __synccall(void (*func)(void *), void *ctx)  	struct chain *cur, *next;  	uint64_t oldmask; -	pthread_rwlock_wrlock(&lock); - -	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, (uint64_t[]){-1}, &oldmask, 8); -  	if (!libc.threads_minus_1) {  		func(ctx);  		return;  	} +	pthread_rwlock_wrlock(&lock); + +	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, (uint64_t[]){-1}, &oldmask, 8); +  	sem_init(&chaindone, 0, 0);  	sem_init(&chainlock, 0, 1);  	chainlen = 0; | 
