Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d42cb1a9 authored by Matthew Wilcox's avatar Matthew Wilcox Committed by Linus Torvalds
Browse files

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: default avatarMatthew Wilcox <willy@linux.intel.com>
Reviewed-by: default avatarRoss 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f518b160
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -9,6 +9,9 @@

#include "../../include/linux/compiler.h"

#define CONFIG_SHMEM
#define CONFIG_SWAP

#ifndef NULL
#define NULL	0
#endif
+41 −0
Original line number Diff line number Diff line
@@ -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();