0001
0002 #ifndef _LINUX_INTERVAL_TREE_H
0003 #define _LINUX_INTERVAL_TREE_H
0004
0005 #include <linux/rbtree.h>
0006
0007 struct interval_tree_node {
0008 struct rb_node rb;
0009 unsigned long start;
0010 unsigned long last;
0011 unsigned long __subtree_last;
0012 };
0013
0014 extern void
0015 interval_tree_insert(struct interval_tree_node *node,
0016 struct rb_root_cached *root);
0017
0018 extern void
0019 interval_tree_remove(struct interval_tree_node *node,
0020 struct rb_root_cached *root);
0021
0022 extern struct interval_tree_node *
0023 interval_tree_iter_first(struct rb_root_cached *root,
0024 unsigned long start, unsigned long last);
0025
0026 extern struct interval_tree_node *
0027 interval_tree_iter_next(struct interval_tree_node *node,
0028 unsigned long start, unsigned long last);
0029
0030 #endif