interval_tree.h 831 B

123456789101112131415161718192021222324252627282930
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _LINUX_INTERVAL_TREE_H
  3. #define _LINUX_INTERVAL_TREE_H
  4. #include <linux/rbtree.h>
  5. struct interval_tree_node {
  6. struct rb_node rb;
  7. unsigned long start; /* Start of interval */
  8. unsigned long last; /* Last location _in_ interval */
  9. unsigned long __subtree_last;
  10. };
  11. extern void
  12. interval_tree_insert(struct interval_tree_node *node,
  13. struct rb_root_cached *root);
  14. extern void
  15. interval_tree_remove(struct interval_tree_node *node,
  16. struct rb_root_cached *root);
  17. extern struct interval_tree_node *
  18. interval_tree_iter_first(struct rb_root_cached *root,
  19. unsigned long start, unsigned long last);
  20. extern struct interval_tree_node *
  21. interval_tree_iter_next(struct interval_tree_node *node,
  22. unsigned long start, unsigned long last);
  23. #endif /* _LINUX_INTERVAL_TREE_H */