Lines Matching refs:root
45 radix_max(struct radix_tree_root *root) in radix_max() argument
47 return ((1UL << (root->height * RADIX_TREE_MAP_SHIFT)) - 1UL); in radix_max()
57 radix_tree_clean_root_node(struct radix_tree_root *root) in radix_tree_clean_root_node() argument
60 if (root->rnode->count == 0) { in radix_tree_clean_root_node()
61 free(root->rnode, M_RADIX); in radix_tree_clean_root_node()
62 root->rnode = NULL; in radix_tree_clean_root_node()
63 root->height = 0; in radix_tree_clean_root_node()
68 radix_tree_lookup(struct radix_tree_root *root, unsigned long index) in radix_tree_lookup() argument
75 node = root->rnode; in radix_tree_lookup()
76 height = root->height - 1; in radix_tree_lookup()
77 if (index > radix_max(root)) in radix_tree_lookup()
89 radix_tree_iter_find(struct radix_tree_root *root, struct radix_tree_iter *iter, in radix_tree_iter_find() argument
97 node = root->rnode; in radix_tree_iter_find()
100 height = root->height - 1; in radix_tree_iter_find()
101 if (height == -1 || index > radix_max(root)) in radix_tree_iter_find()
128 radix_tree_delete(struct radix_tree_root *root, unsigned long index) in radix_tree_delete() argument
137 node = root->rnode; in radix_tree_delete()
138 height = root->height - 1; in radix_tree_delete()
139 if (index > radix_max(root)) in radix_tree_delete()
161 if (node == root->rnode) { in radix_tree_delete()
162 root->rnode = NULL; in radix_tree_delete()
163 root->height = 0; in radix_tree_delete()
175 radix_tree_iter_delete(struct radix_tree_root *root, in radix_tree_iter_delete() argument
178 radix_tree_delete(root, iter->index); in radix_tree_iter_delete()
182 radix_tree_insert(struct radix_tree_root *root, unsigned long index, void *item) in radix_tree_insert() argument
194 node = root->rnode; in radix_tree_insert()
198 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_insert()
201 root->rnode = node; in radix_tree_insert()
202 root->height++; in radix_tree_insert()
206 while (radix_max(root) < index) { in radix_tree_insert()
208 if (root->height == RADIX_TREE_MAX_HEIGHT) { in radix_tree_insert()
209 radix_tree_clean_root_node(root); in radix_tree_insert()
218 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_insert()
229 node->slots[0] = root->rnode; in radix_tree_insert()
231 root->rnode = node; in radix_tree_insert()
233 root->height++; in radix_tree_insert()
237 height = root->height - 1; in radix_tree_insert()
250 root->gfp_mask | M_ZERO); in radix_tree_insert()
254 radix_tree_clean_root_node(root); in radix_tree_insert()
280 radix_tree_store(struct radix_tree_root *root, unsigned long index, void **ppitem) in radix_tree_store() argument
293 *ppitem = radix_tree_delete(root, index); in radix_tree_store()
298 node = root->rnode; in radix_tree_store()
302 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_store()
305 root->rnode = node; in radix_tree_store()
306 root->height++; in radix_tree_store()
310 while (radix_max(root) < index) { in radix_tree_store()
312 if (root->height == RADIX_TREE_MAX_HEIGHT) { in radix_tree_store()
313 radix_tree_clean_root_node(root); in radix_tree_store()
322 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_store()
333 node->slots[0] = root->rnode; in radix_tree_store()
335 root->rnode = node; in radix_tree_store()
337 root->height++; in radix_tree_store()
341 height = root->height - 1; in radix_tree_store()
354 root->gfp_mask | M_ZERO); in radix_tree_store()
358 radix_tree_clean_root_node(root); in radix_tree_store()