Support urcu 0.6.6 with the likely/unlikely API change
authorDavid Goulet <david.goulet@polymtl.ca>
Thu, 3 Nov 2011 15:59:02 +0000 (11:59 -0400)
committerDavid Goulet <david.goulet@polymtl.ca>
Thu, 3 Nov 2011 15:59:02 +0000 (11:59 -0400)
Signed-off-by: David Goulet <david.goulet@polymtl.ca>
README
configure.ac
hashtable/rculfhash.c
lttng-sessiond/futex.c

diff --git a/README b/README
index 03bc1f591a244ac7dea143badcd0674031ab1173..4ed9c5bedeb09cb190324a08a98720923cc50bf8 100644 (file)
--- a/README
+++ b/README
@@ -13,7 +13,7 @@ REQUIREMENTS:
     - liburcu
       Userspace RCU library, by Mathieu Desnoyers and Paul E. McKenney
 
-      -> Tested with liburcu >= v0.6.5
+      -> Tested with liburcu >= v0.6.6
 
       * Debian/Ubuntu package: liburcu-dev
       * Git : git://lttng.org/userspace-rcu.git
index 3ead48e7b8344f06df61566f9d1e1a8cdf7bf60c..ac77c8222ae588b6fcb3edfca3917887e168c997 100644 (file)
@@ -16,9 +16,6 @@ AC_CHECK_HEADERS([ \
        getopt.h sys/ipc.h sys/shm.h popt.h grp.h \
 ])
 
-# URCU library version needed or newer
-liburcu_version=">= 0.6.5"
-
 # Check for pthread
 AC_CHECK_LIB([pthread], [pthread_create], [],
        [AC_MSG_ERROR([Cannot find libpthread. Use [LDFLAGS]=-Ldir to specify its location.])]
@@ -29,6 +26,9 @@ AC_CHECK_LIB([popt], [poptGetContext], [],
        [AC_MSG_ERROR([Cannot find libpopt. Use [LDFLAGS]=-Ldir to specify its location.])]
 )
 
+# URCU library version needed or newer
+liburcu_version=">= 0.6.6"
+
 # Check liburcu needed function calls
 AC_CHECK_DECL([cds_list_add], [],
        [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu/list.h>]]
@@ -45,6 +45,11 @@ AC_CHECK_DECL([rcu_thread_offline], [],
 AC_CHECK_DECL([rcu_thread_online], [],
        [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
 )
+AC_CHECK_DECL([caa_likely], [],
+       [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include <urcu.h>]]
+)
+
+# Check libust library
 AC_CHECK_DECL([ustctl_create_session],
        [
                AC_DEFINE([CONFIG_LTTNG_TOOLS_HAVE_UST], 1)
@@ -56,7 +61,6 @@ AC_CHECK_DECL([ustctl_create_session],
        ],
        [[#include <ust/lttng-ust-ctl.h>]]
 )
-
 AM_CONDITIONAL([LTTNG_TOOLS_HAVE_UST], [ test "x$have_ust_test" = "x1" ])
 
 AC_CHECK_FUNCS([sched_getcpu sysconf])
index 27c0eeb10ee0b15fc2f23b4fb2ae1e4246b34715..2e8315314a93722e0c35ef71cb35883aed1a063e 100644 (file)
@@ -605,7 +605,7 @@ int ht_get_split_count_index(unsigned long hash)
 
        assert(split_count_mask >= 0);
        cpu = sched_getcpu();
-       if (unlikely(cpu < 0))
+       if (caa_unlikely(cpu < 0))
                return hash & split_count_mask;
        else
                return cpu & split_count_mask;
@@ -624,11 +624,11 @@ void ht_count_add(struct cds_lfht *ht, unsigned long size, unsigned long hash)
        unsigned long split_count;
        int index;
 
-       if (unlikely(!ht->split_count))
+       if (caa_unlikely(!ht->split_count))
                return;
        index = ht_get_split_count_index(hash);
        split_count = uatomic_add_return(&ht->split_count[index].add, 1);
-       if (unlikely(!(split_count & ((1UL << COUNT_COMMIT_ORDER) - 1)))) {
+       if (caa_unlikely(!(split_count & ((1UL << COUNT_COMMIT_ORDER) - 1)))) {
                long count;
 
                dbg_printf("add split count %lu\n", split_count);
@@ -651,11 +651,11 @@ void ht_count_del(struct cds_lfht *ht, unsigned long size, unsigned long hash)
        unsigned long split_count;
        int index;
 
-       if (unlikely(!ht->split_count))
+       if (caa_unlikely(!ht->split_count))
                return;
        index = ht_get_split_count_index(hash);
        split_count = uatomic_add_return(&ht->split_count[index].del, 1);
-       if (unlikely(!(split_count & ((1UL << COUNT_COMMIT_ORDER) - 1)))) {
+       if (caa_unlikely(!(split_count & ((1UL << COUNT_COMMIT_ORDER) - 1)))) {
                long count;
 
                dbg_printf("del split count %lu\n", split_count);
@@ -807,12 +807,12 @@ void _cds_lfht_gc_bucket(struct cds_lfht_node *dummy, struct cds_lfht_node *node
                 */
                assert(dummy != node);
                for (;;) {
-                       if (unlikely(is_end(iter)))
+                       if (caa_unlikely(is_end(iter)))
                                return;
-                       if (likely(clear_flag(iter)->p.reverse_hash > node->p.reverse_hash))
+                       if (caa_likely(clear_flag(iter)->p.reverse_hash > node->p.reverse_hash))
                                return;
                        next = rcu_dereference(clear_flag(iter)->p.next);
-                       if (likely(is_removed(next)))
+                       if (caa_likely(is_removed(next)))
                                break;
                        iter_prev = clear_flag(iter);
                        iter = next;
@@ -916,9 +916,9 @@ void _cds_lfht_add(struct cds_lfht *ht,
                iter = rcu_dereference(iter_prev->p.next);
                assert(iter_prev->p.reverse_hash <= node->p.reverse_hash);
                for (;;) {
-                       if (unlikely(is_end(iter)))
+                       if (caa_unlikely(is_end(iter)))
                                goto insert;
-                       if (likely(clear_flag(iter)->p.reverse_hash > node->p.reverse_hash))
+                       if (caa_likely(clear_flag(iter)->p.reverse_hash > node->p.reverse_hash))
                                goto insert;
 
                        /* dummy node is the first node of the identical-hash-value chain */
@@ -926,7 +926,7 @@ void _cds_lfht_add(struct cds_lfht *ht,
                                goto insert;
 
                        next = rcu_dereference(clear_flag(iter)->p.next);
-                       if (unlikely(is_removed(next)))
+                       if (caa_unlikely(is_removed(next)))
                                goto gc_node;
 
                        /* uniquely add */
@@ -1016,7 +1016,7 @@ int _cds_lfht_del(struct cds_lfht *ht, unsigned long size,
                struct cds_lfht_node *new_next;
 
                next = old;
-               if (unlikely(is_removed(next)))
+               if (caa_unlikely(is_removed(next)))
                        return -ENOENT;
                if (dummy_removal)
                        assert(is_dummy(next));
@@ -1409,20 +1409,20 @@ void cds_lfht_lookup(struct cds_lfht *ht, void *key, size_t key_len,
        node = rcu_dereference(dummy_node->p.next);
        node = clear_flag(node);
        for (;;) {
-               if (unlikely(is_end(node))) {
+               if (caa_unlikely(is_end(node))) {
                        node = next = NULL;
                        break;
                }
-               if (unlikely(node->p.reverse_hash > reverse_hash)) {
+               if (caa_unlikely(node->p.reverse_hash > reverse_hash)) {
                        node = next = NULL;
                        break;
                }
                next = rcu_dereference(node->p.next);
                assert(node == clear_flag(node));
-               if (likely(!is_removed(next))
+               if (caa_likely(!is_removed(next))
                    && !is_dummy(next)
                    && node->p.reverse_hash == reverse_hash
-                   && likely(!ht->compare_fct(node->key, node->key_len, key, key_len))) {
+                   && caa_likely(!ht->compare_fct(node->key, node->key_len, key, key_len))) {
                                break;
                }
                node = clear_flag(next);
@@ -1447,18 +1447,18 @@ void cds_lfht_next_duplicate(struct cds_lfht *ht, struct cds_lfht_iter *iter)
        node = clear_flag(next);
 
        for (;;) {
-               if (unlikely(is_end(node))) {
+               if (caa_unlikely(is_end(node))) {
                        node = next = NULL;
                        break;
                }
-               if (unlikely(node->p.reverse_hash > reverse_hash)) {
+               if (caa_unlikely(node->p.reverse_hash > reverse_hash)) {
                        node = next = NULL;
                        break;
                }
                next = rcu_dereference(node->p.next);
-               if (likely(!is_removed(next))
+               if (caa_likely(!is_removed(next))
                    && !is_dummy(next)
-                   && likely(!ht->compare_fct(node->key, node->key_len, key, key_len))) {
+                   && caa_likely(!ht->compare_fct(node->key, node->key_len, key, key_len))) {
                                break;
                }
                node = clear_flag(next);
@@ -1474,12 +1474,12 @@ void cds_lfht_next(struct cds_lfht *ht, struct cds_lfht_iter *iter)
 
        node = clear_flag(iter->next);
        for (;;) {
-               if (unlikely(is_end(node))) {
+               if (caa_unlikely(is_end(node))) {
                        node = next = NULL;
                        break;
                }
                next = rcu_dereference(node->p.next);
-               if (likely(!is_removed(next))
+               if (caa_likely(!is_removed(next))
                    && !is_dummy(next)) {
                                break;
                }
index de3f94e6e6a0bb6dcbc25505721ad033c398a1c1..e01771e6ea422bbbc8088f5b719a438f83f6b829 100644 (file)
@@ -93,7 +93,7 @@ void futex_nto1_wait(int32_t *futex)
  */
 void futex_nto1_wake(int32_t *futex)
 {
-       if (unlikely(uatomic_read(futex) == -1)) {
+       if (caa_unlikely(uatomic_read(futex) == -1)) {
                uatomic_set(futex, 0);
                futex_async(futex, FUTEX_WAKE, 1, NULL, NULL, 0);
        }
This page took 0.031774 seconds and 5 git commands to generate.