Lines Matching refs:xa

86 xa_init_flags(struct xarray *xa, gfp_t gfp)
89 mutex_init(&xa->xa_lock, MUTEX_DEFAULT, IPL_VM);
90 rb_tree_init(&xa->xa_tree, &xa_rb_ops);
91 xa->xa_gfp = gfp;
95 xa_destroy(struct xarray *xa)
100 * Linux allows xa to remain populated on destruction; it is
103 while ((n = RB_TREE_MIN(&xa->xa_tree)) != NULL) {
104 rb_tree_remove_node(&xa->xa_tree, n);
107 mutex_destroy(&xa->xa_lock);
111 xa_load(struct xarray *xa, unsigned long key)
117 mutex_enter(&xa->xa_lock);
118 n = rb_tree_find_node(&xa->xa_tree, &key64);
119 mutex_exit(&xa->xa_lock);
125 xa_store(struct xarray *xa, unsigned long key, void *datum, gfp_t gfp)
138 mutex_enter(&xa->xa_lock);
139 collision = rb_tree_insert_node(&xa->xa_tree, n);
141 rb_tree_remove_node(&xa->xa_tree, n);
142 recollision = rb_tree_insert_node(&xa->xa_tree, n);
145 mutex_exit(&xa->xa_lock);
155 xa_alloc(struct xarray *xa, uint32_t *idp, void *datum, struct xa_limit limit,
170 mutex_enter(&xa->xa_lock);
171 while ((n1 = rb_tree_find_node_geq(&xa->xa_tree, &key64)) != NULL &&
183 collision = rb_tree_insert_node(&xa->xa_tree, n);
186 out: mutex_exit(&xa->xa_lock);
195 xa_find(struct xarray *xa, unsigned long *startp, unsigned long max,
203 mutex_enter(&xa->xa_lock);
204 n = rb_tree_find_node_geq(&xa->xa_tree, &key64);
205 mutex_exit(&xa->xa_lock);
215 xa_find_after(struct xarray *xa, unsigned long *startp, unsigned long max,
223 found = xa_find(xa, &start, max, tagmask);
230 xa_erase(struct xarray *xa, unsigned long key)
236 mutex_enter(&xa->xa_lock);
237 n = rb_tree_find_node(&xa->xa_tree, &key64);
239 rb_tree_remove_node(&xa->xa_tree, n);
240 mutex_exit(&xa->xa_lock);