X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Furcu-bp.c;h=dd7b7922e62e286342e532a017717a7375f5933c;hb=379252796aab7571210d4a2e8eb9886e913c0036;hp=0d6ff4b0071965a6897b5904c86ce1851ecb1e6b;hpb=a0ec6d9b6b67e37fc81c98e04008907bc500cde8;p=userspace-rcu.git diff --git a/src/urcu-bp.c b/src/urcu-bp.c index 0d6ff4b..dd7b792 100644 --- a/src/urcu-bp.c +++ b/src/urcu-bp.c @@ -120,7 +120,10 @@ enum membarrier_cmd { static void __attribute__((constructor)) _urcu_bp_init(void); static -void __attribute__((destructor)) urcu_bp_exit(void); +void urcu_bp_exit(void); +static +void __attribute__((destructor)) urcu_bp_exit_destructor(void); +static void urcu_call_rcu_exit(void); #ifndef CONFIG_RCU_FORCE_SYS_MEMBARRIER int urcu_bp_has_sys_membarrier; @@ -673,6 +676,13 @@ void urcu_bp_exit(void) mutex_unlock(&init_lock); } +static +void urcu_bp_exit_destructor(void) +{ + urcu_call_rcu_exit(); + urcu_bp_exit(); +} + /* * Holding the rcu_gp_lock and rcu_registry_lock across fork will make * sure we fork() don't race with a concurrent thread executing with