projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rculfhash,test: add memory_backend argument
[urcu.git]
/
rculfhash.c
diff --git
a/rculfhash.c
b/rculfhash.c
index dd49c500db4aa8fa77b859101b3e021ed6ecb96b..6c648f17da8a939d22894067eb1cc8c24620a8e0 100644
(file)
--- a/
rculfhash.c
+++ b/
rculfhash.c
@@
-242,15
+242,6
@@
struct partition_resize_work {
unsigned long start, unsigned long len);
};
unsigned long start, unsigned long len);
};
-static
-void _cds_lfht_add(struct cds_lfht *ht,
- cds_lfht_match_fct match,
- const void *key,
- unsigned long size,
- struct cds_lfht_node *node,
- struct cds_lfht_iter *unique_ret,
- int bucket);
-
/*
* Algorithm to reverse bits in a word by lookup table, extended to
* 64-bit words.
/*
* Algorithm to reverse bits in a word by lookup table, extended to
* 64-bit words.
@@
-549,7
+540,7
@@
void ht_count_add(struct cds_lfht *ht, unsigned long size, unsigned long hash)
dbg_printf("add split count %lu\n", split_count);
count = uatomic_add_return(&ht->count,
1UL << COUNT_COMMIT_ORDER);
dbg_printf("add split count %lu\n", split_count);
count = uatomic_add_return(&ht->count,
1UL << COUNT_COMMIT_ORDER);
- if (likely(count & (count - 1)))
+ if (
caa_
likely(count & (count - 1)))
return;
/* Only if global count is power of 2 */
return;
/* Only if global count is power of 2 */
@@
-578,7
+569,7
@@
void ht_count_del(struct cds_lfht *ht, unsigned long size, unsigned long hash)
dbg_printf("del split count %lu\n", split_count);
count = uatomic_add_return(&ht->count,
-(1UL << COUNT_COMMIT_ORDER));
dbg_printf("del split count %lu\n", split_count);
count = uatomic_add_return(&ht->count,
-(1UL << COUNT_COMMIT_ORDER));
- if (likely(count & (count - 1)))
+ if (
caa_
likely(count & (count - 1)))
return;
/* Only if global count is power of 2 */
return;
/* Only if global count is power of 2 */
@@
-1158,6
+1149,11
@@
void remove_table(struct cds_lfht *ht, unsigned long i, unsigned long len)
partition_resize_helper(ht, i, len, remove_table_partition);
}
partition_resize_helper(ht, i, len, remove_table_partition);
}
+/*
+ * fini_table() is never called for first_order == 0, which is why
+ * free_by_rcu_order == 0 can be used as criterion to know if free must
+ * be called.
+ */
static
void fini_table(struct cds_lfht *ht,
unsigned long first_order, unsigned long last_order)
static
void fini_table(struct cds_lfht *ht,
unsigned long first_order, unsigned long last_order)
This page took
0.023131 seconds
and
4
git commands to generate.