提交 d42cb1a9 编写于 作者: M Matthew Wilcox 提交者: Linus Torvalds

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: NMatthew Wilcox <willy@linux.intel.com>
Reviewed-by: NRoss Zwisler <ross.zwisler@linux.intel.com>
Cc: Konstantin Khlebnikov <koct9i@gmail.com>
Cc: Kirill Shutemov <kirill.shutemov@linux.intel.com>
Cc: Jan Kara <jack@suse.com>
Cc: Neil Brown <neilb@suse.de>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 f518b160
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
#include "../../include/linux/compiler.h" #include "../../include/linux/compiler.h"
#define CONFIG_SHMEM
#define CONFIG_SWAP
#ifndef NULL #ifndef NULL
#define NULL 0 #define NULL 0
#endif #endif
......
...@@ -232,10 +232,51 @@ void copy_tag_check(void) ...@@ -232,10 +232,51 @@ void copy_tag_check(void)
item_kill_tree(&tree); 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) static void single_thread_tests(void)
{ {
int i; 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(); tag_check();
printf("after tag_check: %d allocated\n", nr_allocated); printf("after tag_check: %d allocated\n", nr_allocated);
gang_check(); gang_check();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册