X-Git-Url: https://git.lttng.org/?p=urcu.git;a=blobdiff_plain;f=urcu.c;h=a016bbda89db8ca970014728f24b24d738fb4464;hp=1d5c06f53c565af243fb45c5e47c1ebb609dff97;hb=7d8246f8a268ecabea63d1004002cc3d366e3108;hpb=553b7eb9da3a223368abdf3f6a5ead35acf8a20b diff --git a/urcu.c b/urcu.c index 1d5c06f..a016bbd 100644 --- a/urcu.c +++ b/urcu.c @@ -66,7 +66,7 @@ * RCU_MEMBARRIER is only possibly available on Linux. */ #if defined(RCU_MEMBARRIER) && defined(__linux__) -#include +#include #endif /* If the headers do not support SYS_membarrier, fall back on RCU_MB */ @@ -109,11 +109,6 @@ struct rcu_gp rcu_gp = { .ctr = RCU_GP_COUNT }; */ DEFINE_URCU_TLS(struct rcu_reader, rcu_reader); -#ifdef DEBUG_YIELD -unsigned int rcu_yield_active; -DEFINE_URCU_TLS(unsigned int, rcu_rand_yield); -#endif - static CDS_LIST_HEAD(registry); /* @@ -513,14 +508,14 @@ void rcu_init(void) void rcu_exit(void) { - struct sigaction act; - int ret; - - ret = sigaction(SIGRCU, NULL, &act); - if (ret) - urcu_die(errno); - assert(act.sa_sigaction == sigrcu_handler); - assert(cds_list_empty(®istry)); + /* + * Don't unregister the SIGRCU signal handler anymore, because + * call_rcu threads could still be using it shortly before the + * application exits. + * Assertion disabled because call_rcu threads are now rcu + * readers, and left running at exit. + * assert(cds_list_empty(®istry)); + */ } #endif /* #ifdef RCU_SIGNAL */