Lines Matching refs:root
47 radix_max(struct radix_tree_root *root) in radix_max() argument
49 return ((1UL << (root->height * RADIX_TREE_MAP_SHIFT)) - 1UL); in radix_max()
59 radix_tree_clean_root_node(struct radix_tree_root *root) in radix_tree_clean_root_node() argument
62 if (root->rnode->count == 0) { in radix_tree_clean_root_node()
63 free(root->rnode, M_RADIX); in radix_tree_clean_root_node()
64 root->rnode = NULL; in radix_tree_clean_root_node()
65 root->height = 0; in radix_tree_clean_root_node()
70 radix_tree_lookup(struct radix_tree_root *root, unsigned long index) in radix_tree_lookup() argument
77 node = root->rnode; in radix_tree_lookup()
78 height = root->height - 1; in radix_tree_lookup()
79 if (index > radix_max(root)) in radix_tree_lookup()
91 radix_tree_iter_find(struct radix_tree_root *root, struct radix_tree_iter *iter, in radix_tree_iter_find() argument
99 node = root->rnode; in radix_tree_iter_find()
102 height = root->height - 1; in radix_tree_iter_find()
103 if (height == -1 || index > radix_max(root)) in radix_tree_iter_find()
130 radix_tree_delete(struct radix_tree_root *root, unsigned long index) in radix_tree_delete() argument
139 node = root->rnode; in radix_tree_delete()
140 height = root->height - 1; in radix_tree_delete()
141 if (index > radix_max(root)) in radix_tree_delete()
163 if (node == root->rnode) { in radix_tree_delete()
164 root->rnode = NULL; in radix_tree_delete()
165 root->height = 0; in radix_tree_delete()
177 radix_tree_iter_delete(struct radix_tree_root *root, in radix_tree_iter_delete() argument
180 radix_tree_delete(root, iter->index); in radix_tree_iter_delete()
184 radix_tree_insert(struct radix_tree_root *root, unsigned long index, void *item) in radix_tree_insert() argument
196 node = root->rnode; in radix_tree_insert()
200 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_insert()
203 root->rnode = node; in radix_tree_insert()
204 root->height++; in radix_tree_insert()
208 while (radix_max(root) < index) { in radix_tree_insert()
210 if (root->height == RADIX_TREE_MAX_HEIGHT) { in radix_tree_insert()
211 radix_tree_clean_root_node(root); in radix_tree_insert()
220 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_insert()
231 node->slots[0] = root->rnode; in radix_tree_insert()
233 root->rnode = node; in radix_tree_insert()
235 root->height++; in radix_tree_insert()
239 height = root->height - 1; in radix_tree_insert()
252 root->gfp_mask | M_ZERO); in radix_tree_insert()
256 radix_tree_clean_root_node(root); in radix_tree_insert()
282 radix_tree_store(struct radix_tree_root *root, unsigned long index, void **ppitem) in radix_tree_store() argument
295 *ppitem = radix_tree_delete(root, index); in radix_tree_store()
300 node = root->rnode; in radix_tree_store()
304 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_store()
307 root->rnode = node; in radix_tree_store()
308 root->height++; in radix_tree_store()
312 while (radix_max(root) < index) { in radix_tree_store()
314 if (root->height == RADIX_TREE_MAX_HEIGHT) { in radix_tree_store()
315 radix_tree_clean_root_node(root); in radix_tree_store()
324 node = malloc(sizeof(*node), M_RADIX, root->gfp_mask | M_ZERO); in radix_tree_store()
335 node->slots[0] = root->rnode; in radix_tree_store()
337 root->rnode = node; in radix_tree_store()
339 root->height++; in radix_tree_store()
343 height = root->height - 1; in radix_tree_store()
356 root->gfp_mask | M_ZERO); in radix_tree_store()
360 radix_tree_clean_root_node(root); in radix_tree_store()