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@linux.intel.com> Reviewed-by: Ross 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: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f518b1607e
commit
d42cb1a9ff
@ -9,6 +9,9 @@
|
||||
|
||||
#include "../../include/linux/compiler.h"
|
||||
|
||||
#define CONFIG_SHMEM
|
||||
#define CONFIG_SWAP
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user