diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Kconfig | 14 | ||||
-rw-r--r-- | lib/Kconfig.debug | 1 | ||||
-rw-r--r-- | lib/Makefile | 3 | ||||
-rw-r--r-- | lib/interval_tree.c | 6 | ||||
-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 | |||
331 | config BTREE | 331 | config BTREE |
332 | boolean | 332 | boolean |
333 | 333 | ||
334 | config 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 | |||
334 | config ASSOCIATIVE_ARRAY | 348 | config 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 | |||
1496 | config INTERVAL_TREE_TEST | 1496 | config 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)) | |||
50 | obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o | 50 | obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o |
51 | 51 | ||
52 | obj-$(CONFIG_BTREE) += btree.o | 52 | obj-$(CONFIG_BTREE) += btree.o |
53 | obj-$(CONFIG_INTERVAL_TREE) += interval_tree.o | ||
53 | obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o | 54 | obj-$(CONFIG_ASSOCIATIVE_ARRAY) += assoc_array.o |
54 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o | 55 | obj-$(CONFIG_DEBUG_PREEMPT) += smp_processor_id.o |
55 | obj-$(CONFIG_DEBUG_LIST) += list_debug.o | 56 | obj-$(CONFIG_DEBUG_LIST) += list_debug.o |
@@ -156,8 +157,6 @@ lib-$(CONFIG_LIBFDT) += $(libfdt_files) | |||
156 | obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o | 157 | obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o |
157 | obj-$(CONFIG_INTERVAL_TREE_TEST) += interval_tree_test.o | 158 | obj-$(CONFIG_INTERVAL_TREE_TEST) += interval_tree_test.o |
158 | 159 | ||
159 | interval_tree_test-objs := interval_tree_test_main.o interval_tree.o | ||
160 | |||
161 | obj-$(CONFIG_PERCPU_TEST) += percpu_test.o | 160 | obj-$(CONFIG_PERCPU_TEST) += percpu_test.o |
162 | 161 | ||
163 | obj-$(CONFIG_ASN1) += asn1_decoder.o | 162 | obj-$(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 @@ | |||
8 | INTERVAL_TREE_DEFINE(struct interval_tree_node, rb, | 9 | INTERVAL_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 | |||
13 | EXPORT_SYMBOL_GPL(interval_tree_insert); | ||
14 | EXPORT_SYMBOL_GPL(interval_tree_remove); | ||
15 | EXPORT_SYMBOL_GPL(interval_tree_iter_first); | ||
16 | EXPORT_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 | |||