Port: Add Solaris getcpu support
[urcu.git] / rculfhash.c
index 710751bc4bf022eccb037f49957b842c9161d67c..6a41b92fa5fb11e3630e56f47ef161c0e4e6ca0f 100644 (file)
  * To discuss these guarantees, we first define "read" operation as any
  * of the the basic cds_lfht_lookup, cds_lfht_next_duplicate,
  * cds_lfht_first, cds_lfht_next operation, as well as
- * cds_lfht_add_unique (failure). 
+ * cds_lfht_add_unique (failure).
  *
  * We define "read traversal" operation as any of the following
  * group of operations
  * shrink hash table from order 6 to 5: fini the index=6 bucket node table
  *
  * A bit of ascii art explanation:
- * 
+ *
  * The order index is the off-by-one compared to the actual power of 2
  * because we use index 0 to deal with the 0 special-case.
- * 
+ *
  * This shows the nodes for a small table ordered by reversed bits:
- * 
+ *
  *    bits   reverse
  * 0  000        000
  * 4  100        001
  * 5  101        101
  * 3  011        110
  * 7  111        111
- * 
- * This shows the nodes in order of non-reversed bits, linked by 
+ *
+ * This shows the nodes in order of non-reversed bits, linked by
  * reversed-bit order.
- * 
+ *
  * order              bits       reverse
  * 0               0  000        000
  * 1               |  1  001        100             <-
 #include <sched.h>
 
 #include "config.h"
+#include "compat-getcpu.h"
 #include <urcu.h>
 #include <urcu-call-rcu.h>
 #include <urcu-flavor.h>
@@ -364,7 +365,7 @@ struct partition_resize_work {
  * Originally from Public Domain.
  */
 
-static const uint8_t BitReverseTable256[256] = 
+static const uint8_t BitReverseTable256[256] =
 {
 #define R2(n) (n),   (n) + 2*64,     (n) + 1*64,     (n) + 3*64
 #define R4(n) R2(n), R2((n) + 2*16), R2((n) + 1*16), R2((n) + 3*16)
@@ -385,21 +386,21 @@ uint8_t bit_reverse_u8(uint8_t v)
 static
 uint32_t bit_reverse_u32(uint32_t v)
 {
-       return ((uint32_t) bit_reverse_u8(v) << 24) | 
-               ((uint32_t) bit_reverse_u8(v >> 8) << 16) | 
-               ((uint32_t) bit_reverse_u8(v >> 16) << 8) | 
+       return ((uint32_t) bit_reverse_u8(v) << 24) |
+               ((uint32_t) bit_reverse_u8(v >> 8) << 16) |
+               ((uint32_t) bit_reverse_u8(v >> 16) << 8) |
                ((uint32_t) bit_reverse_u8(v >> 24));
 }
 #else
 static
 uint64_t bit_reverse_u64(uint64_t v)
 {
-       return ((uint64_t) bit_reverse_u8(v) << 56) | 
-               ((uint64_t) bit_reverse_u8(v >> 8)  << 48) | 
+       return ((uint64_t) bit_reverse_u8(v) << 56) |
+               ((uint64_t) bit_reverse_u8(v >> 8)  << 48) |
                ((uint64_t) bit_reverse_u8(v >> 16) << 40) |
                ((uint64_t) bit_reverse_u8(v >> 24) << 32) |
-               ((uint64_t) bit_reverse_u8(v >> 32) << 24) | 
-               ((uint64_t) bit_reverse_u8(v >> 40) << 16) | 
+               ((uint64_t) bit_reverse_u8(v >> 32) << 24) |
+               ((uint64_t) bit_reverse_u8(v >> 40) << 16) |
                ((uint64_t) bit_reverse_u8(v >> 48) << 8) |
                ((uint64_t) bit_reverse_u8(v >> 56));
 }
@@ -619,26 +620,18 @@ void free_split_items_count(struct cds_lfht *ht)
        poison_free(ht->split_count);
 }
 
-#if defined(HAVE_SCHED_GETCPU)
 static
 int ht_get_split_count_index(unsigned long hash)
 {
        int cpu;
 
        assert(split_count_mask >= 0);
-       cpu = sched_getcpu();
+       cpu = urcu_sched_getcpu();
        if (caa_unlikely(cpu < 0))
                return hash & split_count_mask;
        else
                return cpu & split_count_mask;
 }
-#else /* #if defined(HAVE_SCHED_GETCPU) */
-static
-int ht_get_split_count_index(unsigned long hash)
-{
-       return hash & split_count_mask;
-}
-#endif /* #else #if defined(HAVE_SCHED_GETCPU) */
 
 static
 void ht_count_add(struct cds_lfht *ht, unsigned long size, unsigned long hash)
This page took 0.023922 seconds and 4 git commands to generate.