|  | #ifndef _LINUX_INTERVAL_TREE_H | 
|  | #define _LINUX_INTERVAL_TREE_H | 
|  |  | 
|  | #include <linux/rbtree.h> | 
|  |  | 
|  | struct interval_tree_node { | 
|  | struct rb_node rb; | 
|  | unsigned long start;	/* Start of interval */ | 
|  | unsigned long last;	/* Last location _in_ interval */ | 
|  | unsigned long __subtree_last; | 
|  | }; | 
|  |  | 
|  | extern void | 
|  | interval_tree_insert(struct interval_tree_node *node, struct rb_root *root); | 
|  |  | 
|  | extern void | 
|  | interval_tree_remove(struct interval_tree_node *node, struct rb_root *root); | 
|  |  | 
|  | extern struct interval_tree_node * | 
|  | interval_tree_iter_first(struct rb_root *root, | 
|  | unsigned long start, unsigned long last); | 
|  |  | 
|  | extern struct interval_tree_node * | 
|  | interval_tree_iter_next(struct interval_tree_node *node, | 
|  | unsigned long start, unsigned long last); | 
|  |  | 
|  | #endif	/* _LINUX_INTERVAL_TREE_H */ |