Merge branch 'master' into urcu/ht-shrink
[urcu.git] / rculfhash.c
index c7a429e6902fa521ff0d72d2d62e6f194878ad66..03209623de816e6ad2a6668989706f9b362860ce 100644 (file)
 #include <stdint.h>
 #include <string.h>
 
-#include <urcu/config.h>
+#include "config.h"
 #include <urcu.h>
 #include <urcu-call-rcu.h>
 #include <urcu/arch.h>
@@ -608,7 +608,7 @@ void ht_count_del(struct cds_lfht *ht, unsigned long size)
 
 #else /* #if defined(HAVE_SCHED_GETCPU) && defined(HAVE_SYSCONF) */
 
-static const long nr_cpus_mask = -1;
+static const long nr_cpus_mask = -2;
 
 static
 struct ht_items_count *alloc_per_cpu_items_count(void)
@@ -1041,8 +1041,12 @@ void partition_resize_helper(struct cds_lfht *ht, unsigned long i,
         * We spawn just the number of threads we need to satisfy the minimum
         * partition size, up to the number of CPUs in the system.
         */
-       nr_threads = min(nr_cpus_mask + 1,
-                        len >> MIN_PARTITION_PER_THREAD_ORDER);
+       if (nr_cpus_mask > 0) {
+               nr_threads = min(nr_cpus_mask + 1,
+                                len >> MIN_PARTITION_PER_THREAD_ORDER);
+       } else {
+               nr_threads = 1;
+       }
        partition_len = len >> get_count_order_ulong(nr_threads);
        work = calloc(nr_threads, sizeof(*work));
        thread_id = calloc(nr_threads, sizeof(*thread_id));
@@ -1395,10 +1399,7 @@ void cds_lfht_next(struct cds_lfht *ht, struct cds_lfht_iter *iter)
 {
        struct cds_lfht_node *node, *next;
 
-       node = iter->node;
-       next = iter->next;
-       node = clear_flag(next);
-
+       node = clear_flag(iter->next);
        for (;;) {
                if (unlikely(is_end(node))) {
                        node = next = NULL;
@@ -1425,7 +1426,7 @@ void cds_lfht_first(struct cds_lfht *ht, struct cds_lfht_iter *iter)
         * first node of the linked list.
         */
        lookup = &ht->t.tbl[0]->nodes[0];
-       iter->node = (struct cds_lfht_node *) lookup;
+       iter->next = lookup->next;
        cds_lfht_next(ht, iter);
 }
 
This page took 0.024398 seconds and 4 git commands to generate.