aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Kconfig14
-rw-r--r--lib/Kconfig.debug1
-rw-r--r--lib/Makefile3
-rw-r--r--lib/interval_tree.c6
-rw-r--r--lib/interval_tree_test.c (renamed from lib/interval_tree_test_main.c)0
5 files changed, 22 insertions, 2 deletions
diff --git a/lib/Kconfig b/lib/Kconfig
index 4771fb3f4da4..334f7722a999 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -331,6 +331,20 @@ config TEXTSEARCH_FSM
331config BTREE 331config BTREE
332 boolean 332 boolean
333 333
334config INTERVAL_TREE
335 boolean
336 help
337 Simple, embeddable, interval-tree. Can find the start of an
338 overlapping range in log(n) time and then iterate over all
339 overlapping nodes. The algorithm is implemented as an
340 augmented rbtree.
341
342 See:
343
344 Documentation/rbtree.txt
345
346 for more information.
347
334config ASSOCIATIVE_ARRAY 348config ASSOCIATIVE_ARRAY
335 bool 349 bool
336 help 350 help
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 819ac51202c0..4bff173fef0a 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1496,6 +1496,7 @@ config RBTREE_TEST
1496config INTERVAL_TREE_TEST 1496config INTERVAL_TREE_TEST
1497 tristate "Interval tree test" 1497 tristate "Interval tree test"
1498 depends on m && DEBUG_KERNEL 1498 depends on m && DEBUG_KERNEL
1499 select INTERVAL_TREE
1499 help 1500 help
1500 A benchmark measuring the performance of the interval tree library 1501 A benchmark measuring the performance of the interval tree library
1501 1502
diff --git a/lib/Makefile b/lib/Makefile
index 0cd7b68e1382..2c6c1a42e1d2 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -50,6 +50,7 @@ CFLAGS_hweight.o = $(subst $(quote),,$(CONFIG_ARCH_HWEIGHT_CFLAGS))
50obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o 50obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o
51 51
52obj-$(CONFIG_BTREE) += btree.o 52obj-$(CONFIG_BTREE) += btree.o
53obj-$(CONFIG_INTERVAL_TREE) += interval_tree.o
53obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o 54obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o
54obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o 55obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o
55obj-$(CONFIG_DEBUG_LIST) += list_debug.o 56obj-$(CONFIG_DEBUG_LIST) += list_debug.o
@@ -156,8 +157,6 @@ lib-$(CONFIG_LIBFDT) += $(libfdt_files)
156obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o 157obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o
157obj-$(CONFIG_INTERVAL_TREE_TEST) += interval_tree_test.o 158obj-$(CONFIG_INTERVAL_TREE_TEST) += interval_tree_test.o
158 159
159interval_tree_test-objs := interval_tree_test_main.o interval_tree.o
160
161obj-$(CONFIG_PERCPU_TEST) += percpu_test.o 160obj-$(CONFIG_PERCPU_TEST) += percpu_test.o
162 161
163obj-$(CONFIG_ASN1) += asn1_decoder.o 162obj-$(CONFIG_ASN1) += asn1_decoder.o
diff --git a/lib/interval_tree.c b/lib/interval_tree.c
index e6eb406f2d65..f367f9ad544c 100644
--- a/lib/interval_tree.c
+++ b/lib/interval_tree.c
@@ -1,6 +1,7 @@
1#include <linux/init.h> 1#include <linux/init.h>
2#include <linux/interval_tree.h> 2#include <linux/interval_tree.h>
3#include <linux/interval_tree_generic.h> 3#include <linux/interval_tree_generic.h>
4#include <linux/module.h>
4 5
5#define START(node) ((node)->start) 6#define START(node) ((node)->start)
6#define LAST(node) ((node)->last) 7#define LAST(node) ((node)->last)
@@ -8,3 +9,8 @@
8INTERVAL_TREE_DEFINE(struct interval_tree_node, rb, 9INTERVAL_TREE_DEFINE(struct interval_tree_node, rb,
9 unsigned long, __subtree_last, 10 unsigned long, __subtree_last,
10 START, LAST,, interval_tree) 11 START, LAST,, interval_tree)
12
13EXPORT_SYMBOL_GPL(interval_tree_insert);
14EXPORT_SYMBOL_GPL(interval_tree_remove);
15EXPORT_SYMBOL_GPL(interval_tree_iter_first);
16EXPORT_SYMBOL_GPL(interval_tree_iter_next);
diff --git a/lib/interval_tree_test_main.c b/lib/interval_tree_test.c
index 245900b98c8e..245900b98c8e 100644
--- a/lib/interval_tree_test_main.c
+++ b/lib/interval_tree_test.c