mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 05:48:40 +00:00
![Michel Lespinasse](/assets/img/avatar_default.png)
Implement an interval tree as a replacement for the VMA prio_tree. The algorithms are similar to lib/interval_tree.c; however that code can't be directly reused as the interval endpoints are not explicitly stored in the VMA. So instead, the common algorithm is moved into a template and the details (node type, how to get interval endpoints from the node, etc) are filled in using the C preprocessor. Once the interval tree functions are available, using them as a replacement to the VMA prio tree is a relatively simple, mechanical job. Signed-off-by: Michel Lespinasse <walken@google.com> Cc: Rik van Riel <riel@redhat.com> Cc: Hillf Danton <dhillf@gmail.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: David Woodhouse <dwmw2@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
13 lines
344 B
C
13 lines
344 B
C
#include <linux/init.h>
|
|
#include <linux/interval_tree.h>
|
|
|
|
#define ITSTRUCT struct interval_tree_node
|
|
#define ITRB rb
|
|
#define ITTYPE unsigned long
|
|
#define ITSUBTREE __subtree_last
|
|
#define ITSTART(n) ((n)->start)
|
|
#define ITLAST(n) ((n)->last)
|
|
#define ITSTATIC
|
|
#define ITPREFIX interval_tree
|
|
|
|
#include <linux/interval_tree_tmpl.h>
|