return &ht->tbl_order[0][index];
}
/*
- * equivalent to get_count_order_ulong(index + 1), but optimizes
- * away the non-existing 0 special-case for
- * get_count_order_ulong.
+ * equivalent to cds_lfht_get_count_order_ulong(index + 1), but
+ * optimizes away the non-existing 0 special-case for
+ * cds_lfht_get_count_order_ulong.
*/
- order = fls_ulong(index);
+ order = cds_lfht_fls_ulong(index);
dbg_printf("bucket index %lu order %lu aridx %lu\n",
index, order, index & ((1UL << (order - 1)) - 1));
return &ht->tbl_order[order][index & ((1UL << (order - 1)) - 1)];
struct cds_lfht *alloc_cds_lfht(unsigned long min_nr_alloc_buckets,
unsigned long max_nr_buckets)
{
- struct cds_lfht *ht;
-
- ht = calloc(1, sizeof(struct cds_lfht));
- assert(ht);
-
- ht->mm = &cds_lfht_mm_order;
-
- ht->min_nr_alloc_buckets = min_nr_alloc_buckets;
- ht->min_alloc_buckets_order = get_count_order_ulong(min_nr_alloc_buckets);
- ht->max_nr_buckets = max_nr_buckets;
-
- ht->bucket_at = bucket_at;
-
- return ht;
+ return __default_alloc_cds_lfht(
+ &cds_lfht_mm_order, sizeof(struct cds_lfht),
+ min_nr_alloc_buckets, max_nr_buckets);
}
const struct cds_lfht_mm_type cds_lfht_mm_order = {