X-Git-Url: http://git.liburcu.org/?p=userspace-rcu.git;a=blobdiff_plain;f=urcu-bp.c;h=9c7da3d8d235355246de95dfb5de87c8dcc1fec8;hp=d0bfb0dc713dd563bd4b8d67b41cbac03a5227e4;hb=d4dae7fc4a6fcb4c88c65a2445ee1ddc7a8ac500;hpb=a90fc0aa575c71e1e5fb4dc8adc1f2d9001e536d diff --git a/urcu-bp.c b/urcu-bp.c index d0bfb0d..9c7da3d 100644 --- a/urcu-bp.c +++ b/urcu-bp.c @@ -581,6 +581,17 @@ void urcu_bp_thread_exit_notifier(void *rcu_key) rcu_bp_unregister(rcu_key); } +static +void rcu_sys_membarrier_status(int available) +{ + /* + * membarrier has blocking behavior, which changes the + * application behavior too much compared to using barriers when + * synchronize_rcu is used repeatedly (without using call_rcu). + * Don't use membarrier for now. + */ +} + static void rcu_bp_init(void) { @@ -593,9 +604,8 @@ void rcu_bp_init(void) if (ret) abort(); ret = membarrier(MEMBARRIER_CMD_QUERY, 0); - if (ret >= 0 && (ret & MEMBARRIER_CMD_SHARED)) { - urcu_bp_has_sys_membarrier = 1; - } + rcu_sys_membarrier_status(ret >= 0 + && (ret & MEMBARRIER_CMD_SHARED)); initialized = 1; } mutex_unlock(&init_lock);