Cleanup headers
[urcu.git] / urcu-defer.c
index 13f94fa0f05b05833152265da9147bdb456e88b6..e71b0cf7c1dd6c4f8eaef6b185b485a4797edf0e 100644 (file)
@@ -28,7 +28,6 @@
 #include <string.h>
 #include <errno.h>
 #include <poll.h>
-#include <linux/futex.h>
 #include <sys/time.h>
 #include <syscall.h>
 #include <unistd.h>
@@ -38,6 +37,8 @@
 #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);
 
@@ -110,9 +111,9 @@ static void internal_urcu_unlock(pthread_mutex_t *mutex)
  */
 static void wake_up_defer(void)
 {
-       if (unlikely(atomic_read(&defer_thread_futex) == -1)) {
-               atomic_set(&defer_thread_futex, 0);
-               futex(&defer_thread_futex, FUTEX_WAKE, 0,
+       if (unlikely(uatomic_read(&defer_thread_futex) == -1)) {
+               uatomic_set(&defer_thread_futex, 0);
+               futex(&defer_thread_futex, FUTEX_WAKE, 1,
                      NULL, NULL, 0);
        }
 }
@@ -136,15 +137,15 @@ static unsigned long rcu_defer_num_callbacks(void)
  */
 static void wait_defer(void)
 {
-       atomic_dec(&defer_thread_futex);
+       uatomic_dec(&defer_thread_futex);
        smp_mb();       /* Write futex before read queue */
        if (rcu_defer_num_callbacks()) {
                smp_mb();       /* Read queue before write futex */
                /* Callbacks are queued, don't wait. */
-               atomic_set(&defer_thread_futex, 0);
+               uatomic_set(&defer_thread_futex, 0);
        } else {
                smp_rmb();      /* Read queue before read futex */
-               if (atomic_read(&defer_thread_futex) == -1)
+               if (uatomic_read(&defer_thread_futex) == -1)
                        futex(&defer_thread_futex, FUTEX_WAIT, -1,
                              NULL, NULL, 0);
        }
This page took 0.02316 seconds and 4 git commands to generate.