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 c54570be..90ad1e25 100644 --- a/src/thread/synccall.c +++ b/src/thread/synccall.c @@ -71,6 +71,10 @@ void __synccall(void (*func)(void *), void *ctx)  	sigqueue(self->pid, SIGSYNCCALL, (union sigval){0});  	while (sem_wait(&chaindone)); +	sa.sa_flags = 0; +	sa.sa_handler = SIG_IGN; +	__libc_sigaction(SIGSYNCCALL, &sa, 0); +  	for (cur=head; cur; cur=cur->next) {  		sem_post(&cur->sem);  		while (sem_wait(&cur->sem2)); @@ -82,10 +86,6 @@ void __synccall(void (*func)(void *), void *ctx)  		sem_post(&cur->sem);  	} -	sa.sa_flags = 0; -	sa.sa_handler = SIG_IGN; -	__libc_sigaction(SIGSYNCCALL, &sa, 0); -  	__syscall(SYS_rt_sigprocmask, SIG_SETMASK,  		&oldmask, 0, _NSIG/8); | 
