Lines Matching refs:rb

165 INTERVAL_TREE_DEFINE(struct drm_mm_node, rb,  in INTERVAL_TREE_DEFINE()  argument
181 struct rb_node **link, *rb; in drm_mm_interval_tree_add_node() local
188 rb = &hole_node->rb; in drm_mm_interval_tree_add_node()
189 while (rb) { in drm_mm_interval_tree_add_node()
190 parent = rb_entry(rb, struct drm_mm_node, rb); in drm_mm_interval_tree_add_node()
195 rb = rb_parent(rb); in drm_mm_interval_tree_add_node()
198 rb = &hole_node->rb; in drm_mm_interval_tree_add_node()
199 link = &hole_node->rb.rb_right; in drm_mm_interval_tree_add_node()
202 rb = NULL; in drm_mm_interval_tree_add_node()
208 rb = *link; in drm_mm_interval_tree_add_node()
209 parent = rb_entry(rb, struct drm_mm_node, rb); in drm_mm_interval_tree_add_node()
213 link = &parent->rb.rb_left; in drm_mm_interval_tree_add_node()
215 link = &parent->rb.rb_right; in drm_mm_interval_tree_add_node()
220 rb_link_node(&node->rb, rb, link); in drm_mm_interval_tree_add_node()
221 rb_insert_augmented_cached(&node->rb, &mm->interval_tree, leftmost, in drm_mm_interval_tree_add_node()
226 struct rb_node **link = &root.rb_node, *rb = NULL; \
229 rb = *link; \
230 if (x < expr(rb_entry(rb, struct drm_mm_node, member))) \
231 link = &rb->rb_left; \
233 link = &rb->rb_right; \
235 rb_link_node(&node->member, rb, link); \
242 static u64 rb_to_hole_size(struct rb_node *rb) in rb_to_hole_size() argument
244 return rb_entry(rb, struct drm_mm_node, rb_hole_size)->hole_size; in rb_to_hole_size()
250 struct rb_node **link = &root->rb_root.rb_node, *rb = NULL; in insert_hole_size() local
255 rb = *link; in insert_hole_size()
256 if (x > rb_to_hole_size(rb)) { in insert_hole_size()
257 link = &rb->rb_left; in insert_hole_size()
259 link = &rb->rb_right; in insert_hole_size()
264 rb_link_node(&node->rb_hole_size, rb, link); in insert_hole_size()
294 static inline struct drm_mm_node *rb_hole_size_to_node(struct rb_node *rb) in rb_hole_size_to_node() argument
296 return rb_entry_safe(rb, struct drm_mm_node, rb_hole_size); in rb_hole_size_to_node()
299 static inline struct drm_mm_node *rb_hole_addr_to_node(struct rb_node *rb) in rb_hole_addr_to_node() argument
301 return rb_entry_safe(rb, struct drm_mm_node, rb_hole_addr); in rb_hole_addr_to_node()
304 static inline u64 rb_hole_size(struct rb_node *rb) in rb_hole_size() argument
306 return rb_entry(rb, struct drm_mm_node, rb_hole_size)->hole_size; in rb_hole_size()
311 struct rb_node *rb = mm->holes_size.rb_root.rb_node; in best_hole() local
316 rb_entry(rb, struct drm_mm_node, rb_hole_size); in best_hole()
320 rb = rb->rb_right; in best_hole()
322 rb = rb->rb_left; in best_hole()
324 } while (rb); in best_hole()
331 struct rb_node *rb = mm->holes_addr.rb_node; in find_hole() local
334 while (rb) { in find_hole()
337 node = rb_hole_addr_to_node(rb); in find_hole()
341 rb = node->rb_hole_addr.rb_left; in find_hole()
343 rb = node->rb_hole_addr.rb_right; in find_hole()
453 static u64 rb_to_hole_size_or_zero(struct rb_node *rb) in rb_to_hole_size_or_zero() argument
455 return rb ? rb_to_hole_size(rb) : 0; in rb_to_hole_size_or_zero()
623 rb_replace_node_cached(&old->rb, &new->rb, &mm->interval_tree); in drm_mm_replace_node()