projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add hash table iterator macros
[urcu.git]
/
tests
/
test_urcu_hash.c
diff --git
a/tests/test_urcu_hash.c
b/tests/test_urcu_hash.c
index 31113533b25187cbf71c0fd8832671d8addc24d1..554f1e914202c48ce7cc296524a1fd4fb4ef1f6c 100644
(file)
--- a/
tests/test_urcu_hash.c
+++ b/
tests/test_urcu_hash.c
@@
-109,6
+109,8
@@
struct test_data {
struct lfht_test_node {
struct cds_lfht_node node;
struct lfht_test_node {
struct cds_lfht_node node;
+ void *key;
+ unsigned int key_len;
/* cache-cold for iteration */
struct rcu_head head;
};
/* cache-cold for iteration */
struct rcu_head head;
};
@@
-123,7
+125,9
@@
static inline
void lfht_test_node_init(struct lfht_test_node *node, void *key,
size_t key_len)
{
void lfht_test_node_init(struct lfht_test_node *node, void *key,
size_t key_len)
{
- cds_lfht_node_init(&node->node, key, key_len);
+ cds_lfht_node_init(&node->node);
+ node->key = key;
+ node->key_len = key_len;
}
static inline struct lfht_test_node *
}
static inline struct lfht_test_node *
@@
-422,10
+426,12
@@
unsigned long test_compare(void *key1, size_t key1_len,
}
static
}
static
-int test_match(struct cds_lfht_node *node, void *
arg
)
+int test_match(struct cds_lfht_node *node, void *
key
)
{
{
- return !test_compare(node->key, node->key_len,
- arg, sizeof(unsigned long));
+ struct lfht_test_node *test_node = to_test_node(node);
+
+ return !test_compare(test_node->key, test_node->key_len,
+ key, sizeof(unsigned long));
}
static
}
static
@@
-571,17
+577,17
@@
void *thr_writer(void *_count)
sizeof(void *));
rcu_read_lock();
if (add_unique) {
sizeof(void *));
rcu_read_lock();
if (add_unique) {
- ret_node = cds_lfht_add_unique(test_ht, test_match,
- test_hash(node->
node.key, node->node.
key_len, TEST_HASH_SEED),
+ ret_node = cds_lfht_add_unique(test_ht, test_match,
node->key,
+ test_hash(node->
key, node->
key_len, TEST_HASH_SEED),
&node->node);
} else {
if (add_replace)
&node->node);
} else {
if (add_replace)
- ret_node = cds_lfht_add_replace(test_ht, test_match,
- test_hash(node->
node.key, node->node.
key_len, TEST_HASH_SEED),
+ ret_node = cds_lfht_add_replace(test_ht, test_match,
node->key,
+ test_hash(node->
key, node->
key_len, TEST_HASH_SEED),
&node->node);
else
cds_lfht_add(test_ht,
&node->node);
else
cds_lfht_add(test_ht,
- test_hash(node->
node.key, node->node.
key_len, TEST_HASH_SEED),
+ test_hash(node->
key, node->
key_len, TEST_HASH_SEED),
&node->node);
}
rcu_read_unlock();
&node->node);
}
rcu_read_unlock();
@@
-668,17
+674,17
@@
static int populate_hash(void)
sizeof(void *));
rcu_read_lock();
if (add_unique) {
sizeof(void *));
rcu_read_lock();
if (add_unique) {
- ret_node = cds_lfht_add_unique(test_ht, test_match,
- test_hash(node->
node.key, node->node.
key_len, TEST_HASH_SEED),
+ ret_node = cds_lfht_add_unique(test_ht, test_match,
node->key,
+ test_hash(node->
key, node->
key_len, TEST_HASH_SEED),
&node->node);
} else {
if (add_replace)
&node->node);
} else {
if (add_replace)
- ret_node = cds_lfht_add_replace(test_ht, test_match,
- test_hash(node->
node.key, node->node.
key_len, TEST_HASH_SEED),
+ ret_node = cds_lfht_add_replace(test_ht, test_match,
node->key,
+ test_hash(node->
key, node->
key_len, TEST_HASH_SEED),
&node->node);
else
cds_lfht_add(test_ht,
&node->node);
else
cds_lfht_add(test_ht,
- test_hash(node->
node.key, node->node.
key_len, TEST_HASH_SEED),
+ test_hash(node->
key, node->
key_len, TEST_HASH_SEED),
&node->node);
}
rcu_read_unlock();
&node->node);
}
rcu_read_unlock();
@@
-705,14
+711,12
@@
void test_delete_all_nodes(struct cds_lfht *ht)
struct lfht_test_node *node;
unsigned long count = 0;
struct lfht_test_node *node;
unsigned long count = 0;
- cds_lfht_first(ht, &iter);
- while ((node = cds_lfht_iter_get_test_node(&iter)) != NULL) {
+ cds_lfht_for_each_entry(ht, &iter, node, node) {
int ret;
ret = cds_lfht_del(test_ht, &iter);
assert(!ret);
call_rcu(&node->head, free_node_cb);
int ret;
ret = cds_lfht_del(test_ht, &iter);
assert(!ret);
call_rcu(&node->head, free_node_cb);
- cds_lfht_next(ht, &iter);
count++;
}
printf("deleted %lu nodes.\n", count);
count++;
}
printf("deleted %lu nodes.\n", count);
This page took
0.041203 seconds
and
4
git commands to generate.