X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Furcu-defer-impl.h;h=cbb0ca8565bfe2b52806e343f7f61d09117d6f8c;hb=8c677380d0f9241b9cd548082cf843c5111736d8;hp=b5d79262c03bb88a28cd376d78c4189ca3c578cd;hpb=879a3e166178d16b2ffedc73899904d52285cfe8;p=urcu.git diff --git a/src/urcu-defer-impl.h b/src/urcu-defer-impl.h index b5d7926..cbb0ca8 100644 --- a/src/urcu-defer-impl.h +++ b/src/urcu-defer-impl.h @@ -409,8 +409,18 @@ void defer_rcu(void (*fct)(void *p), void *p) static void start_defer_thread(void) { int ret; + sigset_t newmask, oldmask; + + ret = sigfillset(&newmask); + urcu_posix_assert(!ret); + ret = pthread_sigmask(SIG_BLOCK, &newmask, &oldmask); + urcu_posix_assert(!ret); ret = pthread_create(&tid_defer, NULL, thr_defer, NULL); + if (ret) + urcu_die(ret); + + ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL); urcu_posix_assert(!ret); }