[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1460643410-30196-4-git-send-email-willy@linux.intel.com>
Date: Thu, 14 Apr 2016 10:16:24 -0400
From: Matthew Wilcox <willy@...ux.intel.com>
To: linux-kernel@...r.kernel.org,
Andrew Morton <akpm@...ux-foundation.org>
Cc: Matthew Wilcox <willy@...ux.intel.com>, linux-mm@...ck.org,
linux-fsdevel@...r.kernel.org,
Konstantin Khlebnikov <koct9i@...il.com>,
Kirill Shutemov <kirill.shutemov@...ux.intel.com>,
Jan Kara <jack@...e.com>, Neil Brown <neilb@...e.de>,
Ross Zwisler <ross.zwisler@...ux.intel.com>
Subject: [PATCH v2 03/29] radix tree test suite: Add tests for radix_tree_locate_item()
Fairly simple tests; add various items to the tree, then make sure we
can find them again. Also check that a pointer that we know isn't in
the tree is not found.
Signed-off-by: Matthew Wilcox <willy@...ux.intel.com>
Reviewed-by: Ross Zwisler <ross.zwisler@...ux.intel.com>
---
tools/testing/radix-tree/linux/kernel.h | 3 +++
tools/testing/radix-tree/main.c | 41 +++++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+)
diff --git a/tools/testing/radix-tree/linux/kernel.h b/tools/testing/radix-tree/linux/kernel.h
index 6d0cdf6..76a88f3 100644
--- a/tools/testing/radix-tree/linux/kernel.h
+++ b/tools/testing/radix-tree/linux/kernel.h
@@ -9,6 +9,9 @@
#include "../../include/linux/compiler.h"
+#define CONFIG_SHMEM
+#define CONFIG_SWAP
+
#ifndef NULL
#define NULL 0
#endif
diff --git a/tools/testing/radix-tree/main.c b/tools/testing/radix-tree/main.c
index 0e83cad..71c5272 100644
--- a/tools/testing/radix-tree/main.c
+++ b/tools/testing/radix-tree/main.c
@@ -232,10 +232,51 @@ void copy_tag_check(void)
item_kill_tree(&tree);
}
+void __locate_check(struct radix_tree_root *tree, unsigned long index)
+{
+ struct item *item;
+ unsigned long index2;
+
+ item_insert(tree, index);
+ item = item_lookup(tree, index);
+ index2 = radix_tree_locate_item(tree, item);
+ if (index != index2) {
+ printf("index %ld inserted; found %ld\n",
+ index, index2);
+ abort();
+ }
+}
+
+static void locate_check(void)
+{
+ RADIX_TREE(tree, GFP_KERNEL);
+ unsigned long offset, index;
+
+ for (offset = 0; offset < (1 << 3); offset++) {
+ for (index = 0; index < (1UL << 5); index++) {
+ __locate_check(&tree, index + offset);
+ }
+ if (radix_tree_locate_item(&tree, &tree) != -1)
+ abort();
+
+ item_kill_tree(&tree);
+ }
+
+ if (radix_tree_locate_item(&tree, &tree) != -1)
+ abort();
+ __locate_check(&tree, -1);
+ if (radix_tree_locate_item(&tree, &tree) != -1)
+ abort();
+ item_kill_tree(&tree);
+}
+
static void single_thread_tests(void)
{
int i;
+ printf("starting single_thread_tests: %d allocated\n", nr_allocated);
+ locate_check();
+ printf("after locate_check: %d allocated\n", nr_allocated);
tag_check();
printf("after tag_check: %d allocated\n", nr_allocated);
gang_check();
--
2.8.0.rc3
Powered by blists - more mailing lists