| From c02ba372a6b2b0bc8d89f288425097e2bc5cf182 Mon Sep 17 00:00:00 2001 |
| From: Davidlohr Bueso <dave@stgolabs.net> |
| Date: Mon, 10 Jul 2017 15:51:49 -0700 |
| Subject: lib/interval_tree_test.c: allow users to limit scope of endpoint |
| |
| [ Upstream commit a8ec14d4f6aa8e245efacc992c8ee6ea0464ce2a ] |
| |
| 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: Davidlohr Bueso <dbueso@suse.de> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| lib/interval_tree_test.c | 23 +++++++++++++---------- |
| 1 file changed, 13 insertions(+), 10 deletions(-) |
| |
| diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c |
| index bababcf7ffdd..222c8010bda0 100644 |
| --- a/lib/interval_tree_test.c |
| +++ b/lib/interval_tree_test.c |
| @@ -17,6 +17,7 @@ __param(int, nsearches, 100, "Number of searches to the interval tree"); |
| __param(int, search_loops, 1000, "Number of iterations searching the tree"); |
| __param(bool, search_all, false, "Searches will iterate all nodes in 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; |
| @@ -41,18 +42,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) { |
| - nodes[i].start = a; |
| - nodes[i].last = b; |
| - } else { |
| - nodes[i].start = b; |
| - nodes[i].last = a; |
| - } |
| + 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; |
| } |
| + |
| + /* |
| + * 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) |
| -- |
| 2.19.1 |
| |