XenevaOS
Loading...
Searching...
No Matches
interval_tree.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_INTERVAL_TREE_H
3#define _LINUX_INTERVAL_TREE_H
4
5#include <linux/rbtree.h>
6
8 struct rb_node rb;
9 unsigned long start; /* Start of interval */
10 unsigned long last; /* Last location _in_ interval */
11 unsigned long __subtree_last;
12};
13
14extern void
16 struct rb_root_cached *root);
17
18extern void
20 struct rb_root_cached *root);
21
22extern struct interval_tree_node *
24 unsigned long start, unsigned long last);
25
26extern struct interval_tree_node *
28 unsigned long start, unsigned long last);
29
30extern struct interval_tree_node *
32 unsigned long start, unsigned long last);
33
54 /* private: not for use by the caller */
56 unsigned long first_index;
57 unsigned long last_index;
58
59 /* public: */
60 union {
61 unsigned long start_hole;
62 unsigned long start_used;
63 };
64 union {
65 unsigned long last_hole;
66 unsigned long last_used;
67 };
69};
70
72 struct rb_root_cached *itree,
73 unsigned long first_index,
74 unsigned long last_index);
76 struct rb_root_cached *itree,
77 unsigned long new_index);
79
80static inline bool
81interval_tree_span_iter_done(struct interval_tree_span_iter *state)
82{
83 return state->is_hole == -1;
84}
85
86#define interval_tree_for_each_span(span, itree, first_index, last_index) \
87 for (interval_tree_span_iter_first(span, itree, \
88 first_index, last_index); \
89 !interval_tree_span_iter_done(span); \
90 interval_tree_span_iter_next(span))
91
92#endif /* _LINUX_INTERVAL_TREE_H */
struct interval_tree_node * interval_tree_iter_next(struct interval_tree_node *node, unsigned long start, unsigned long last)
void interval_tree_span_iter_next(struct interval_tree_span_iter *state)
void interval_tree_span_iter_first(struct interval_tree_span_iter *state, struct rb_root_cached *itree, unsigned long first_index, unsigned long last_index)
struct interval_tree_node * interval_tree_subtree_search(struct interval_tree_node *node, unsigned long start, unsigned long last)
void interval_tree_remove(struct interval_tree_node *node, struct rb_root_cached *root)
struct interval_tree_node * interval_tree_iter_first(struct rb_root_cached *root, unsigned long start, unsigned long last)
void interval_tree_span_iter_advance(struct interval_tree_span_iter *iter, struct rb_root_cached *itree, unsigned long new_index)
void interval_tree_insert(struct interval_tree_node *node, struct rb_root_cached *root)
void int node
Definition kthread.h:31
Definition interval_tree.h:7
unsigned long start
Definition interval_tree.h:9
unsigned long __subtree_last
Definition interval_tree.h:11
struct rb_node rb
Definition interval_tree.h:8
unsigned long last
Definition interval_tree.h:10
Definition interval_tree.h:53
struct interval_tree_node * nodes[2]
Definition interval_tree.h:55
unsigned long first_index
Definition interval_tree.h:56
unsigned long last_index
Definition interval_tree.h:57
int is_hole
Definition interval_tree.h:68
unsigned long start_used
Definition interval_tree.h:62
unsigned long last_used
Definition interval_tree.h:66
unsigned long last_hole
Definition interval_tree.h:65
unsigned long start_hole
Definition interval_tree.h:61
Definition rbtree_types.h:21
Definition rbtree_types.h:48
#define state(x)
TTY * last
Definition tty.cpp:48
TTY * root
Definition tty.cpp:47