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

Commit a8ec14d4 authored by Davidlohr Bueso's avatar Davidlohr Bueso Committed by Linus Torvalds
Browse files

lib/interval_tree_test.c: allow users to limit scope of endpoint

Add a 'max_endpoint' parameter such that users may easily limit the size
of the intervals that are randomly generated.

Link: http://lkml.kernel.org/r/20170518174936.20265-4-dave@stgolabs.net


Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a54dae03
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ __param(int, perf_loops, 100000, "Number of iterations modifying the tree");
__param(int, nsearches, 100, "Number of searches to the interval tree");
__param(int, search_loops, 10000, "Number of iterations searching the tree");

__param(uint, max_endpoint, ~0, "Largest value for the interval's endpoint");

static struct rb_root root = RB_ROOT;
static struct interval_tree_node *nodes = NULL;
@@ -40,18 +41,20 @@ static void init(void)
	int i;

	for (i = 0; i < nnodes; i++) {
		u32 a = prandom_u32_state(&rnd);
		u32 b = prandom_u32_state(&rnd);
		if (a <= b) {
		u32 b = (prandom_u32_state(&rnd) >> 4) % max_endpoint;
		u32 a = (prandom_u32_state(&rnd) >> 4) % b;

		nodes[i].start = a;
		nodes[i].last = b;
		} else {
			nodes[i].start = b;
			nodes[i].last = a;
		}
	}

	/*
	 * Limit the search scope to what the user defined.
	 * Otherwise we are merely measuring empty walks,
	 * which is pointless.
	 */
	for (i = 0; i < nsearches; i++)
		queries[i] = prandom_u32_state(&rnd);
		queries[i] = (prandom_u32_state(&rnd) >> 4) % max_endpoint;
}

static int interval_tree_test_init(void)