projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rculfhash test: print number of add fail (uniquify matches)
[urcu.git]
/
tests
/
test_urcu_hash.c
diff --git
a/tests/test_urcu_hash.c
b/tests/test_urcu_hash.c
index 280000c1d4c53edff4a79293891c7275e5528fb5..be0eaf4f6e746864ff8093503999cb1304144016 100644
(file)
--- a/
tests/test_urcu_hash.c
+++ b/
tests/test_urcu_hash.c
@@
-73,6
+73,7
@@
static inline pid_t gettid(void)
struct wr_count {
unsigned long update_ops;
unsigned long add;
struct wr_count {
unsigned long update_ops;
unsigned long add;
+ unsigned long add_exist;
unsigned long remove;
};
unsigned long remove;
};
@@
-84,7
+85,7
@@
static unsigned long __thread nr_delnoent;
static unsigned long __thread lookup_fail;
static unsigned long __thread lookup_ok;
static unsigned long __thread lookup_fail;
static unsigned long __thread lookup_ok;
-static struct
rcu_
ht *test_ht;
+static struct
cds_lf
ht *test_ht;
struct test_data {
int a;
struct test_data {
int a;
@@
-338,7
+339,7
@@
unsigned long test_compare(void *key1, size_t key1_len,
void *thr_reader(void *_count)
{
unsigned long long *count = _count;
void *thr_reader(void *_count)
{
unsigned long long *count = _count;
- struct
rcu_
ht_node *node;
+ struct
cds_lf
ht_node *node;
printf_verbose("thread_begin %s, thread id : %lx, tid %lu\n",
"reader", pthread_self(), (unsigned long)gettid());
printf_verbose("thread_begin %s, thread id : %lx, tid %lu\n",
"reader", pthread_self(), (unsigned long)gettid());
@@
-354,7
+355,7
@@
void *thr_reader(void *_count)
for (;;) {
rcu_read_lock();
for (;;) {
rcu_read_lock();
- node = ht_lookup(test_ht,
+ node =
cds_lf
ht_lookup(test_ht,
(void *)(unsigned long)(rand_r(&rand_lookup) % rand_pool),
sizeof(void *));
if (node == NULL)
(void *)(unsigned long)(rand_r(&rand_lookup) % rand_pool),
sizeof(void *));
if (node == NULL)
@@
-384,14
+385,14
@@
void *thr_reader(void *_count)
static
void free_node_cb(struct rcu_head *head)
{
static
void free_node_cb(struct rcu_head *head)
{
- struct
rcu_
ht_node *node =
- caa_container_of(head, struct
rcu_
ht_node, head);
+ struct
cds_lf
ht_node *node =
+ caa_container_of(head, struct
cds_lf
ht_node, head);
free(node);
}
void *thr_writer(void *_count)
{
free(node);
}
void *thr_writer(void *_count)
{
- struct
rcu_
ht_node *node, *ret_node;
+ struct
cds_lf
ht_node *node, *ret_node;
struct wr_count *count = _count;
int ret;
struct wr_count *count = _count;
int ret;
@@
-409,15
+410,15
@@
void *thr_writer(void *_count)
for (;;) {
if (add_only || rand_r(&rand_lookup) & 1) {
for (;;) {
if (add_only || rand_r(&rand_lookup) & 1) {
- node = malloc(sizeof(struct
rcu_
ht_node));
+ node = malloc(sizeof(struct
cds_lf
ht_node));
rcu_read_lock();
rcu_read_lock();
- ht_node_init(node,
+
cds_lf
ht_node_init(node,
(void *)(unsigned long)(rand_r(&rand_lookup) % rand_pool),
sizeof(void *));
if (add_unique)
(void *)(unsigned long)(rand_r(&rand_lookup) % rand_pool),
sizeof(void *));
if (add_unique)
- ret_node = ht_add_unique(test_ht, node);
+ ret_node =
cds_lf
ht_add_unique(test_ht, node);
else
else
- ht_add(test_ht, node);
+
cds_lf
ht_add(test_ht, node);
rcu_read_unlock();
if (add_unique && ret_node != node) {
free(node);
rcu_read_unlock();
if (add_unique && ret_node != node) {
free(node);
@@
-427,11
+428,11
@@
void *thr_writer(void *_count)
} else {
/* May delete */
rcu_read_lock();
} else {
/* May delete */
rcu_read_lock();
- node = ht_lookup(test_ht,
+ node =
cds_lf
ht_lookup(test_ht,
(void *)(unsigned long)(rand_r(&rand_lookup) % rand_pool),
sizeof(void *));
if (node)
(void *)(unsigned long)(rand_r(&rand_lookup) % rand_pool),
sizeof(void *));
if (node)
- ret = ht_remove(test_ht, node);
+ ret =
cds_lf
ht_remove(test_ht, node);
else
ret = -ENOENT;
rcu_read_unlock();
else
ret = -ENOENT;
rcu_read_unlock();
@@
-469,6
+470,7
@@
void *thr_writer(void *_count)
nr_addexist, nr_del, nr_delnoent);
count->update_ops = nr_writes;
count->add = nr_add;
nr_addexist, nr_del, nr_delnoent);
count->update_ops = nr_writes;
count->add = nr_add;
+ count->add_exist = nr_addexist;
count->remove = nr_del;
return ((void*)2);
}
count->remove = nr_del;
return ((void*)2);
}
@@
-498,7
+500,7
@@
int main(int argc, char **argv)
unsigned long long *count_reader;
struct wr_count *count_writer;
unsigned long long tot_reads = 0, tot_writes = 0,
unsigned long long *count_reader;
struct wr_count *count_writer;
unsigned long long tot_reads = 0, tot_writes = 0,
- tot_add = 0, tot_remove = 0;
+ tot_add = 0, tot_
add_exist = 0, tot_
remove = 0;
unsigned long count, removed;
int i, a, ret;
unsigned long count, removed;
int i, a, ret;
@@
-610,7
+612,7
@@
int main(int argc, char **argv)
tid_writer = malloc(sizeof(*tid_writer) * nr_writers);
count_reader = malloc(sizeof(*count_reader) * nr_readers);
count_writer = malloc(sizeof(*count_writer) * nr_writers);
tid_writer = malloc(sizeof(*tid_writer) * nr_writers);
count_reader = malloc(sizeof(*count_reader) * nr_readers);
count_writer = malloc(sizeof(*count_writer) * nr_writers);
- test_ht = ht_new(test_hash, test_compare, 0x42UL,
+ test_ht =
cds_lf
ht_new(test_hash, test_compare, 0x42UL,
init_hash_size, call_rcu);
err = create_all_cpu_call_rcu_data(0);
init_hash_size, call_rcu);
err = create_all_cpu_call_rcu_data(0);
@@
-651,16
+653,17
@@
int main(int argc, char **argv)
exit(1);
tot_writes += count_writer[i].update_ops;
tot_add += count_writer[i].add;
exit(1);
tot_writes += count_writer[i].update_ops;
tot_add += count_writer[i].add;
+ tot_add_exist += count_writer[i].add_exist;
tot_remove += count_writer[i].remove;
}
printf("Counting nodes... ");
fflush(stdout);
tot_remove += count_writer[i].remove;
}
printf("Counting nodes... ");
fflush(stdout);
- ht_count_nodes(test_ht, &count, &removed);
+
cds_lf
ht_count_nodes(test_ht, &count, &removed);
printf("done.\n");
if (count || removed)
printf("WARNING: nodes left in the hash table upon destroy: "
"%lu nodes + %lu logically removed.\n", count, removed);
printf("done.\n");
if (count || removed)
printf("WARNING: nodes left in the hash table upon destroy: "
"%lu nodes + %lu logically removed.\n", count, removed);
- ret = ht_destroy(test_ht);
+ ret =
cds_lf
ht_destroy(test_ht);
if (ret)
printf_verbose("final delete aborted\n");
if (ret)
printf_verbose("final delete aborted\n");
@@
-671,10
+674,10
@@
int main(int argc, char **argv)
printf("SUMMARY %-25s testdur %4lu nr_readers %3u rdur %6lu "
"nr_writers %3u "
"wdelay %6lu rand_pool %12llu nr_reads %12llu nr_writes %12llu nr_ops %12llu "
printf("SUMMARY %-25s testdur %4lu nr_readers %3u rdur %6lu "
"nr_writers %3u "
"wdelay %6lu rand_pool %12llu nr_reads %12llu nr_writes %12llu nr_ops %12llu "
- "nr_add %12llu nr_remove %12llu nr_leaked %12llu\n",
+ "nr_add %12llu nr_
add_fail %12llu nr_
remove %12llu nr_leaked %12llu\n",
argv[0], duration, nr_readers, rduration,
nr_writers, wdelay, rand_pool, tot_reads, tot_writes,
argv[0], duration, nr_readers, rduration,
nr_writers, wdelay, rand_pool, tot_reads, tot_writes,
- tot_reads + tot_writes, tot_add, tot_remove,
+ tot_reads + tot_writes, tot_add, tot_
add_exist, tot_
remove,
tot_add - tot_remove - count);
free(tid_reader);
free(tid_writer);
tot_add - tot_remove - count);
free(tid_reader);
free(tid_writer);
This page took
0.025763 seconds
and
4
git commands to generate.