From mboxrd@z Thu Jan 1 00:00:00 1970 From: laijs@cn.fujitsu.com (Lai Jiangshan) Date: Mon, 14 Nov 2011 12:50:58 +0800 Subject: [ltt-dev] [PATCH 8/9] add duplicated node test In-Reply-To: <1321246259-21223-1-git-send-email-laijs@cn.fujitsu.com> References: <1321246259-21223-1-git-send-email-laijs@cn.fujitsu.com> Message-ID: <1321246259-21223-9-git-send-email-laijs@cn.fujitsu.com> Signed-off-by: Lai Jiangshan --- tests/test_urcu_hash.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/tests/test_urcu_hash.c b/tests/test_urcu_hash.c index 3730c2b..964a4e1 100644 --- a/tests/test_urcu_hash.c +++ b/tests/test_urcu_hash.c @@ -111,6 +111,7 @@ struct test_data { struct lfht_test_node { struct cds_lfht_node node; unsigned long hash; + unsigned long dup; unsigned long orig_hash; /* cache-cold for iteration */ struct rcu_head head; @@ -406,6 +407,8 @@ void lfht_test_node_init(struct lfht_test_node *node) cds_lfht_next(test_ht, &iter); if (iter.node) hash = to_test_node(iter.node)->orig_hash; + + node->dup = test_rand_get_bits(2); } node->orig_hash = hash; @@ -427,6 +430,15 @@ void lfht_test_node_init(struct lfht_test_node *node) static int test_match(struct cds_lfht_node *node, void *key) { + struct lfht_test_node *u = to_test_node(node), *v = key; + + if (caa_likely(u->hash != v->hash)) + return 0; + + /* 56.25% (100% * 9 / 16) duplicated when hash value are the same */ + if (u->dup && u->dup == v->dup) + return 1; + return 0; } -- 1.7.4.4