* Lai Jiangshan ([email protected]) wrote: > Prepare for future work for moving key out of struct cds_lfht_node.
Following commit 0422d92c2d658f6093b8209f75808efd2109a110, I don't think this is needed anymore. Thanks, Mathieu > > Signed-off-by: Lai Jiangshan <[email protected]> > --- > rculfhash.c | 2 +- > tests/test_urcu_hash.c | 12 +++++++++--- > urcu/rculfhash.h | 4 ++-- > 3 files changed, 12 insertions(+), 6 deletions(-) > > diff --git a/rculfhash.c b/rculfhash.c > index 29054cd..9745129 100644 > --- a/rculfhash.c > +++ b/rculfhash.c > @@ -1457,7 +1457,7 @@ void cds_lfht_next_duplicate(struct cds_lfht *ht, > struct cds_lfht_iter *iter) > next = rcu_dereference(node->p.next); > if (caa_likely(!is_removed(next)) > && !is_dummy(next) > - && caa_likely(!ht->compare_fct(node->key, node->key_len, > key, key_len))) { > + && caa_likely(!ht->compare_fct(node, iter->node))) { > break; > } > node = clear_flag(next); > diff --git a/tests/test_urcu_hash.c b/tests/test_urcu_hash.c > index 4c45573..9689878 100644 > --- a/tests/test_urcu_hash.c > +++ b/tests/test_urcu_hash.c > @@ -409,8 +409,8 @@ unsigned long test_hash(void *_key, size_t length, > unsigned long seed) > #endif > > static > -unsigned long test_compare(void *key1, size_t key1_len, > - void *key2, size_t key2_len) > +int __test_compare(void *key1, size_t key1_len, > + void *key2, size_t key2_len) > { > if (caa_unlikely(key1_len != key2_len)) > return -1; > @@ -422,9 +422,15 @@ unsigned long test_compare(void *key1, size_t key1_len, > } > > static > +int test_compare(struct cds_lfht_node *a, struct cds_lfht_node *b) > +{ > + return __test_compare(a->key, a->key_len, b->key, b->key_len); > +} > + > +static > int test_match(struct cds_lfht_node *node, void *arg) > { > - return !test_compare(node->key, node->key_len, > + return !__test_compare(node->key, node->key_len, > arg, sizeof(unsigned long)); > } > > diff --git a/urcu/rculfhash.h b/urcu/rculfhash.h > index b56fe56..c6946dc 100644 > --- a/urcu/rculfhash.h > +++ b/urcu/rculfhash.h > @@ -84,8 +84,8 @@ struct cds_lfht; > > typedef unsigned long (*cds_lfht_hash_fct)(void *key, size_t length, > unsigned long seed); > -typedef unsigned long (*cds_lfht_compare_fct)(void *key1, size_t key1_len, > - void *key2, size_t key2_len); > +typedef int (*cds_lfht_compare_fct)(struct cds_lfht_node *a, > + struct cds_lfht_node *b); > typedef int (*cds_lfht_lookup_fct)(struct cds_lfht_node *node, void *arg); > > /* > -- > 1.7.4.4 > -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
