projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rculfhash: use node instead of iter argument for deletion
[urcu.git]
/
rculfhash.c
diff --git
a/rculfhash.c
b/rculfhash.c
index 8f2d8e4480fda449fbe6dd9de2bb69a2659d8643..75e5ece96c9edb3e462b861fe61e682561d7a1c4 100644
(file)
--- a/
rculfhash.c
+++ b/
rculfhash.c
@@
-1527,15
+1527,15
@@
int cds_lfht_replace(struct cds_lfht *ht, struct cds_lfht_iter *old_iter,
new_node);
}
new_node);
}
-int cds_lfht_del(struct cds_lfht *ht, struct cds_lfht_
iter *iter
)
+int cds_lfht_del(struct cds_lfht *ht, struct cds_lfht_
node *node
)
{
unsigned long size, hash;
int ret;
size = rcu_dereference(ht->size);
{
unsigned long size, hash;
int ret;
size = rcu_dereference(ht->size);
- ret = _cds_lfht_del(ht, size,
iter->
node);
+ ret = _cds_lfht_del(ht, size, node);
if (!ret) {
if (!ret) {
- hash = bit_reverse_ulong(
iter->
node->reverse_hash);
+ hash = bit_reverse_ulong(node->reverse_hash);
ht_count_del(ht, size, hash);
}
return ret;
ht_count_del(ht, size, hash);
}
return ret;
@@
-1600,11
+1600,10
@@
int cds_lfht_destroy(struct cds_lfht *ht, pthread_attr_t **attr)
void cds_lfht_count_nodes(struct cds_lfht *ht,
long *approx_before,
unsigned long *count,
void cds_lfht_count_nodes(struct cds_lfht *ht,
long *approx_before,
unsigned long *count,
- unsigned long *removed,
long *approx_after)
{
struct cds_lfht_node *node, *next;
long *approx_after)
{
struct cds_lfht_node *node, *next;
- unsigned long nr_bucket = 0;
+ unsigned long nr_bucket = 0
, nr_removed = 0
;
*approx_before = 0;
if (ht->split_count) {
*approx_before = 0;
if (ht->split_count) {
@@
-1617,7
+1616,6
@@
void cds_lfht_count_nodes(struct cds_lfht *ht,
}
*count = 0;
}
*count = 0;
- *removed = 0;
/* Count non-bucket nodes in the table */
node = bucket_at(ht, 0);
/* Count non-bucket nodes in the table */
node = bucket_at(ht, 0);
@@
-1625,7
+1623,7
@@
void cds_lfht_count_nodes(struct cds_lfht *ht,
next = rcu_dereference(node->next);
if (is_removed(next)) {
if (!is_bucket(next))
next = rcu_dereference(node->next);
if (is_removed(next)) {
if (!is_bucket(next))
- (
*
removed)++;
+ (
nr_
removed)++;
else
(nr_bucket)++;
} else if (!is_bucket(next))
else
(nr_bucket)++;
} else if (!is_bucket(next))
@@
-1634,6
+1632,7
@@
void cds_lfht_count_nodes(struct cds_lfht *ht,
(nr_bucket)++;
node = clear_flag(next);
} while (!is_end(node));
(nr_bucket)++;
node = clear_flag(next);
} while (!is_end(node));
+ dbg_printf("number of logically removed nodes: %lu\n", nr_removed);
dbg_printf("number of bucket nodes: %lu\n", nr_bucket);
*approx_after = 0;
if (ht->split_count) {
dbg_printf("number of bucket nodes: %lu\n", nr_bucket);
*approx_after = 0;
if (ht->split_count) {
This page took
0.023378 seconds
and
4
git commands to generate.