Skip to content

Commit

Permalink
test_rhashtable: Use inlined rhashtable interface
Browse files Browse the repository at this point in the history
This patch converts test_rhashtable to the inlined rhashtable
interface.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Herbert Xu authored and David S. Miller committed Mar 20, 2015
1 parent fa37732 commit b182aa6
Showing 1 changed file with 19 additions and 14 deletions.
33 changes: 19 additions & 14 deletions lib/test_rhashtable.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,16 @@ struct test_obj {
struct rhash_head node;
};

static const struct rhashtable_params test_rht_params = {
.nelem_hint = TEST_HT_SIZE,
.head_offset = offsetof(struct test_obj, node),
.key_offset = offsetof(struct test_obj, value),
.key_len = sizeof(int),
.hashfn = jhash,
.max_size = 2, /* we expand/shrink manually here */
.nulls_base = (3U << RHT_BASE_SHIFT),
};

static int __init test_rht_lookup(struct rhashtable *ht)
{
unsigned int i;
Expand All @@ -47,7 +57,7 @@ static int __init test_rht_lookup(struct rhashtable *ht)
bool expected = !(i % 2);
u32 key = i;

obj = rhashtable_lookup(ht, &key);
obj = rhashtable_lookup_fast(ht, &key, test_rht_params);

if (expected && !obj) {
pr_warn("Test failed: Could not find key %u\n", key);
Expand Down Expand Up @@ -133,7 +143,11 @@ static int __init test_rhashtable(struct rhashtable *ht)
obj->ptr = TEST_PTR;
obj->value = i * 2;

rhashtable_insert(ht, &obj->node);
err = rhashtable_insert_fast(ht, &obj->node, test_rht_params);
if (err) {
kfree(obj);
goto error;
}
}

rcu_read_lock();
Expand Down Expand Up @@ -173,10 +187,10 @@ static int __init test_rhashtable(struct rhashtable *ht)
for (i = 0; i < TEST_ENTRIES; i++) {
u32 key = i * 2;

obj = rhashtable_lookup(ht, &key);
obj = rhashtable_lookup_fast(ht, &key, test_rht_params);
BUG_ON(!obj);

rhashtable_remove(ht, &obj->node);
rhashtable_remove_fast(ht, &obj->node, test_rht_params);
kfree(obj);
}

Expand All @@ -195,20 +209,11 @@ static struct rhashtable ht;

static int __init test_rht_init(void)
{
struct rhashtable_params params = {
.nelem_hint = TEST_HT_SIZE,
.head_offset = offsetof(struct test_obj, node),
.key_offset = offsetof(struct test_obj, value),
.key_len = sizeof(int),
.hashfn = jhash,
.max_size = 2, /* we expand/shrink manually here */
.nulls_base = (3U << RHT_BASE_SHIFT),
};
int err;

pr_info("Running resizable hashtable tests...\n");

err = rhashtable_init(&ht, &params);
err = rhashtable_init(&ht, &test_rht_params);
if (err < 0) {
pr_warn("Test failed: Unable to initialize hashtable: %d\n",
err);
Expand Down

0 comments on commit b182aa6

Please sign in to comment.