From d933dd0e116eceb59b1df0f223e3962a1e51bfb3 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 21 Sep 2011 10:50:58 -0400 Subject: [PATCH] rculfhash: approximation can be negative Signed-off-by: Mathieu Desnoyers --- rculfhash.c | 4 ++-- tests/test_urcu_hash.c | 14 ++++++++------ urcu/rculfhash.h | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/rculfhash.c b/rculfhash.c index 359de13..cd25d33 100644 --- a/rculfhash.c +++ b/rculfhash.c @@ -1452,10 +1452,10 @@ int cds_lfht_destroy(struct cds_lfht *ht, pthread_attr_t **attr) } void cds_lfht_count_nodes(struct cds_lfht *ht, - unsigned long *approx_before, + long *approx_before, unsigned long *count, unsigned long *removed, - unsigned long *approx_after) + long *approx_after) { struct cds_lfht_node *node, *next; struct _cds_lfht_node *lookup; diff --git a/tests/test_urcu_hash.c b/tests/test_urcu_hash.c index d2dd488..600b1f9 100644 --- a/tests/test_urcu_hash.c +++ b/tests/test_urcu_hash.c @@ -397,7 +397,8 @@ void *thr_count(void *arg) rcu_register_thread(); for (;;) { - unsigned long count, removed, approx_before, approx_after; + unsigned long count, removed; + long approx_before, approx_after; ssize_t len; char buf[1]; @@ -416,12 +417,12 @@ void *thr_count(void *arg) &approx_after); rcu_read_unlock(); printf("done.\n"); - printf("Approximation before node accounting: %lu nodes.\n", + printf("Approximation before node accounting: %ld nodes.\n", approx_before); printf("Accounting of nodes in the hash table: " "%lu nodes + %lu logically removed.\n", count, removed); - printf("Approximation after node accounting: %lu nodes.\n", + printf("Approximation after node accounting: %ld nodes.\n", approx_after); } rcu_unregister_thread(); @@ -672,7 +673,8 @@ int main(int argc, char **argv) struct wr_count *count_writer; unsigned long long tot_reads = 0, tot_writes = 0, tot_add = 0, tot_add_exist = 0, tot_remove = 0; - unsigned long count, removed, approx_before, approx_after; + unsigned long count, removed; + long approx_before, approx_after; int i, a, ret; struct sigaction act; unsigned int remain; @@ -936,12 +938,12 @@ int main(int argc, char **argv) &approx_after); printf("done.\n"); if (count || removed) { - printf("Approximation before node accounting: %lu nodes.\n", + printf("Approximation before node accounting: %ld nodes.\n", approx_before); printf("WARNING: nodes left in the hash table upon destroy: " "%lu nodes + %lu logically removed.\n", count, removed); - printf("Approximation after node accounting: %lu nodes.\n", + printf("Approximation after node accounting: %ld nodes.\n", approx_after); } ret = cds_lfht_destroy(test_ht, NULL); diff --git a/urcu/rculfhash.h b/urcu/rculfhash.h index 1c1f03b..4a897fa 100644 --- a/urcu/rculfhash.h +++ b/urcu/rculfhash.h @@ -165,10 +165,10 @@ int cds_lfht_destroy(struct cds_lfht *ht, pthread_attr_t **attr); * Call with rcu_read_lock held. */ void cds_lfht_count_nodes(struct cds_lfht *ht, - unsigned long *approx_before, + long *approx_before, unsigned long *count, unsigned long *removed, - unsigned long *approx_after); + long *approx_after); /* * cds_lfht_lookup - lookup a node by key. -- 2.34.1