summaryrefslogtreecommitdiff
path: root/src/thread/synccall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/synccall.c')
-rw-r--r--src/thread/synccall.c8
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);