X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=urcu-defer.c;h=dd570713ee8234a82fa80208f612565c5028c112;hb=b4f313b7ffb3215d54790f303c2ff3e4a41e5919;hp=a38b5c0b9418af76287b3e552fd089f278cb5e55;hpb=dbc6128f26035b2903e3278c6c41990c90831511;p=urcu.git diff --git a/urcu-defer.c b/urcu-defer.c index a38b5c0..dd57071 100644 --- a/urcu-defer.c +++ b/urcu-defer.c @@ -32,14 +32,11 @@ #include #include +#include "urcu/urcu-futex.h" #include "urcu-defer-static.h" /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */ #include "urcu-defer.h" -#define futex(...) syscall(__NR_futex, __VA_ARGS__) -#define FUTEX_WAIT 0 -#define FUTEX_WAKE 1 - void __attribute__((destructor)) urcu_defer_exit(void); extern void synchronize_rcu(void); @@ -101,7 +98,7 @@ static void wake_up_defer(void) { if (unlikely(uatomic_read(&defer_thread_futex) == -1)) { uatomic_set(&defer_thread_futex, 0); - futex(&defer_thread_futex, FUTEX_WAKE, 1, + futex_noasync(&defer_thread_futex, FUTEX_WAKE, 1, NULL, NULL, 0); } } @@ -134,7 +131,7 @@ static void wait_defer(void) } else { smp_rmb(); /* Read queue before read futex */ if (uatomic_read(&defer_thread_futex) == -1) - futex(&defer_thread_futex, FUTEX_WAIT, -1, + futex_noasync(&defer_thread_futex, FUTEX_WAIT, -1, NULL, NULL, 0); } } @@ -233,9 +230,9 @@ end: } /* - * _rcu_defer_queue - Queue a RCU callback. + * _defer_rcu - Queue a RCU callback. */ -void _rcu_defer_queue(void (*fct)(void *p), void *p) +void _defer_rcu(void (*fct)(void *p), void *p) { unsigned long head, tail; @@ -318,9 +315,9 @@ void *thr_defer(void *args) * library wrappers to be used by non-LGPL compatible source code. */ -void rcu_defer_queue(void (*fct)(void *p), void *p) +void defer_rcu(void (*fct)(void *p), void *p) { - _rcu_defer_queue(fct, p); + _defer_rcu(fct, p); } static void start_defer_thread(void)