Lines Matching refs:xa

49 __xa_erase(struct xarray *xa, uint32_t index)  in __xa_erase()  argument
53 XA_ASSERT_LOCKED(xa); in __xa_erase()
55 retval = radix_tree_delete(&xa->root, index); in __xa_erase()
63 xa_erase(struct xarray *xa, uint32_t index) in xa_erase() argument
67 xa_lock(xa); in xa_erase()
68 retval = __xa_erase(xa, index); in xa_erase()
69 xa_unlock(xa); in xa_erase()
79 xa_load(struct xarray *xa, uint32_t index) in xa_load() argument
83 xa_lock(xa); in xa_load()
84 retval = radix_tree_lookup(&xa->root, index); in xa_load()
85 xa_unlock(xa); in xa_load()
98 xa_vm_wait_locked(struct xarray *xa) in xa_vm_wait_locked() argument
100 xa_unlock(xa); in xa_vm_wait_locked()
102 xa_lock(xa); in xa_vm_wait_locked()
118 __xa_alloc(struct xarray *xa, uint32_t *pindex, void *ptr, uint32_t mask, gfp_t gfp) in __xa_alloc() argument
122 XA_ASSERT_LOCKED(xa); in __xa_alloc()
125 MPASS(mask > ((xa->flags & XA_FLAGS_ALLOC1) != 0 ? 1 : 0)); in __xa_alloc()
130 *pindex = (xa->flags & XA_FLAGS_ALLOC1) != 0 ? 1 : 0; in __xa_alloc()
134 retval = radix_tree_insert(&xa->root, *pindex, ptr); in __xa_alloc()
146 xa_vm_wait_locked(xa); in __xa_alloc()
157 xa_alloc(struct xarray *xa, uint32_t *pindex, void *ptr, uint32_t mask, gfp_t gfp) in xa_alloc() argument
164 xa_lock(xa); in xa_alloc()
165 retval = __xa_alloc(xa, pindex, ptr, mask, gfp); in xa_alloc()
166 xa_unlock(xa); in xa_alloc()
178 __xa_alloc_cyclic(struct xarray *xa, uint32_t *pindex, void *ptr, uint32_t mask, in __xa_alloc_cyclic() argument
184 XA_ASSERT_LOCKED(xa); in __xa_alloc_cyclic()
187 MPASS(mask > ((xa->flags & XA_FLAGS_ALLOC1) != 0 ? 1 : 0)); in __xa_alloc_cyclic()
192 *pnext_index = (xa->flags & XA_FLAGS_ALLOC1) != 0 ? 1 : 0; in __xa_alloc_cyclic()
196 retval = radix_tree_insert(&xa->root, *pnext_index, ptr); in __xa_alloc_cyclic()
206 if (*pnext_index == 0 && (xa->flags & XA_FLAGS_ALLOC1) != 0) in __xa_alloc_cyclic()
211 xa_vm_wait_locked(xa); in __xa_alloc_cyclic()
224 xa_alloc_cyclic(struct xarray *xa, uint32_t *pindex, void *ptr, uint32_t mask, in xa_alloc_cyclic() argument
229 xa_lock(xa); in xa_alloc_cyclic()
230 retval = __xa_alloc_cyclic(xa, pindex, ptr, mask, pnext_index, gfp); in xa_alloc_cyclic()
231 xa_unlock(xa); in xa_alloc_cyclic()
244 __xa_insert(struct xarray *xa, uint32_t index, void *ptr, gfp_t gfp) in __xa_insert() argument
248 XA_ASSERT_LOCKED(xa); in __xa_insert()
252 retval = radix_tree_insert(&xa->root, index, ptr); in __xa_insert()
257 xa_vm_wait_locked(xa); in __xa_insert()
268 xa_insert(struct xarray *xa, uint32_t index, void *ptr, gfp_t gfp) in xa_insert() argument
272 xa_lock(xa); in xa_insert()
273 retval = __xa_insert(xa, index, ptr, gfp); in xa_insert()
274 xa_unlock(xa); in xa_insert()
288 __xa_store(struct xarray *xa, uint32_t index, void *ptr, gfp_t gfp) in __xa_store() argument
292 XA_ASSERT_LOCKED(xa); in __xa_store()
296 retval = radix_tree_store(&xa->root, index, &ptr); in __xa_store()
305 xa_vm_wait_locked(xa); in __xa_store()
318 xa_store(struct xarray *xa, uint32_t index, void *ptr, gfp_t gfp) in xa_store() argument
322 xa_lock(xa); in xa_store()
323 retval = __xa_store(xa, index, ptr, gfp); in xa_store()
324 xa_unlock(xa); in xa_store()
333 xa_init_flags(struct xarray *xa, uint32_t flags) in xa_init_flags() argument
335 memset(xa, 0, sizeof(*xa)); in xa_init_flags()
337 mtx_init(&xa->mtx, "lkpi-xarray", NULL, MTX_DEF | MTX_RECURSE); in xa_init_flags()
338 xa->root.gfp_mask = GFP_NOWAIT; in xa_init_flags()
339 xa->flags = flags; in xa_init_flags()
347 xa_destroy(struct xarray *xa) in xa_destroy() argument
352 radix_tree_for_each_slot(ppslot, &xa->root, &iter, 0) in xa_destroy()
353 radix_tree_iter_delete(&xa->root, &iter, ppslot); in xa_destroy()
354 mtx_destroy(&xa->mtx); in xa_destroy()
362 __xa_empty(struct xarray *xa) in __xa_empty() argument
367 XA_ASSERT_LOCKED(xa); in __xa_empty()
369 return (!radix_tree_iter_find(&xa->root, &iter, &temp)); in __xa_empty()
373 xa_empty(struct xarray *xa) in xa_empty() argument
377 xa_lock(xa); in xa_empty()
378 retval = __xa_empty(xa); in xa_empty()
379 xa_unlock(xa); in xa_empty()
390 __xa_next(struct xarray *xa, unsigned long *pindex, bool not_first) in __xa_next() argument
397 XA_ASSERT_LOCKED(xa); in __xa_next()
406 found = radix_tree_iter_find(&xa->root, &iter, &ppslot); in __xa_next()
419 xa_next(struct xarray *xa, unsigned long *pindex, bool not_first) in xa_next() argument
423 xa_lock(xa); in xa_next()
424 retval = __xa_next(xa, pindex, not_first); in xa_next()
425 xa_unlock(xa); in xa_next()