xa 18 crypto/dh.c MPI xa; /* Value is guaranteed to be set. */ xa 26 crypto/dh.c mpi_free(ctx->xa); xa 39 crypto/dh.c return mpi_powm(val, base, ctx->xa, ctx->p); xa 89 crypto/dh.c ctx->xa = mpi_read_raw_data(params.key, params.key_size); xa 90 crypto/dh.c if (!ctx->xa) xa 160 crypto/dh.c if (unlikely(!ctx->xa)) { xa 996 drivers/cdrom/cdrom.c tracks->xa = 0; xa 1026 drivers/cdrom/cdrom.c tracks->xa++; xa 1037 drivers/cdrom/cdrom.c tracks->cdi, tracks->xa); xa 2590 drivers/cdrom/cdrom.c if (!tracks.data && !tracks.cdi && !tracks.xa) xa 2598 drivers/cdrom/cdrom.c if (tracks.xa > 0) xa 129 drivers/crypto/qat/qat_common/qat_asym_algs.c dma_addr_t xa; xa 133 drivers/crypto/qat/qat_common/qat_asym_algs.c dma_addr_t xa; xa 149 drivers/crypto/qat/qat_common/qat_asym_algs.c char *xa; xa 269 drivers/crypto/qat/qat_common/qat_asym_algs.c if (unlikely(!ctx->xa)) xa 297 drivers/crypto/qat/qat_common/qat_asym_algs.c qat_req->in.dh.in.xa = ctx->dma_xa; xa 302 drivers/crypto/qat/qat_common/qat_asym_algs.c qat_req->in.dh.in_g2.xa = ctx->dma_xa; xa 307 drivers/crypto/qat/qat_common/qat_asym_algs.c qat_req->in.dh.in.xa = ctx->dma_xa; xa 476 drivers/crypto/qat/qat_common/qat_asym_algs.c if (ctx->xa) { xa 477 drivers/crypto/qat/qat_common/qat_asym_algs.c dma_free_coherent(dev, ctx->p_size, ctx->xa, ctx->dma_xa); xa 478 drivers/crypto/qat/qat_common/qat_asym_algs.c ctx->xa = NULL; xa 506 drivers/crypto/qat/qat_common/qat_asym_algs.c ctx->xa = dma_alloc_coherent(dev, ctx->p_size, &ctx->dma_xa, xa 508 drivers/crypto/qat/qat_common/qat_asym_algs.c if (!ctx->xa) { xa 512 drivers/crypto/qat/qat_common/qat_asym_algs.c memcpy(ctx->xa + (ctx->p_size - params.key_size), params.key, xa 251 drivers/infiniband/core/cma.c struct xarray *xa = cma_pernet_xa(net, ps); xa 253 drivers/infiniband/core/cma.c return xa_insert(xa, snum, bind_list, GFP_KERNEL); xa 259 drivers/infiniband/core/cma.c struct xarray *xa = cma_pernet_xa(net, ps); xa 261 drivers/infiniband/core/cma.c return xa_load(xa, snum); xa 267 drivers/infiniband/core/cma.c struct xarray *xa = cma_pernet_xa(net, ps); xa 269 drivers/infiniband/core/cma.c xa_erase(xa, snum); xa 230 drivers/infiniband/core/counters.c xa_lock(&rt->xa); xa 231 drivers/infiniband/core/counters.c xa_for_each(&rt->xa, id, res) { xa 248 drivers/infiniband/core/counters.c xa_unlock(&rt->xa); xa 367 drivers/infiniband/core/counters.c xa_lock(&rt->xa); xa 368 drivers/infiniband/core/counters.c xa_for_each(&rt->xa, id, res) { xa 372 drivers/infiniband/core/counters.c xa_unlock(&rt->xa); xa 382 drivers/infiniband/core/counters.c xa_lock(&rt->xa); xa 386 drivers/infiniband/core/counters.c xa_unlock(&rt->xa); xa 157 drivers/infiniband/core/device.c static void *xan_find_marked(struct xarray *xa, unsigned long *indexp, xa 160 drivers/infiniband/core/device.c XA_STATE(xas, xa, *indexp); xa 179 drivers/infiniband/core/device.c #define xan_for_each_marked(xa, index, entry, filter) \ xa 180 drivers/infiniband/core/device.c for (index = 0, entry = xan_find_marked(xa, &(index), filter); \ xa 182 drivers/infiniband/core/device.c (index)++, entry = xan_find_marked(xa, &(index), filter)) xa 699 drivers/infiniband/core/nldev.c xa_lock(&rt->xa); xa 700 drivers/infiniband/core/nldev.c xa_for_each(&rt->xa, id, res) { xa 716 drivers/infiniband/core/nldev.c xa_unlock(&rt->xa); xa 721 drivers/infiniband/core/nldev.c xa_unlock(&rt->xa); xa 1334 drivers/infiniband/core/nldev.c xa_lock(&rt->xa); xa 1340 drivers/infiniband/core/nldev.c xa_for_each(&rt->xa, id, res) { xa 1347 drivers/infiniband/core/nldev.c xa_unlock(&rt->xa); xa 1370 drivers/infiniband/core/nldev.c again: xa_lock(&rt->xa); xa 1373 drivers/infiniband/core/nldev.c xa_unlock(&rt->xa); xa 35 drivers/infiniband/core/restrack.c xa_init_flags(&rt[i].xa, XA_FLAGS_ALLOC); xa 69 drivers/infiniband/core/restrack.c struct xarray *xa = &dev->res[i].xa; xa 71 drivers/infiniband/core/restrack.c if (!xa_empty(xa)) { xa 78 drivers/infiniband/core/restrack.c xa_for_each(xa, index, e) { xa 98 drivers/infiniband/core/restrack.c xa_destroy(xa); xa 115 drivers/infiniband/core/restrack.c XA_STATE(xas, &rt->xa, 0); xa 118 drivers/infiniband/core/restrack.c xa_lock(&rt->xa); xa 124 drivers/infiniband/core/restrack.c xa_unlock(&rt->xa); xa 225 drivers/infiniband/core/restrack.c ret = xa_insert(&rt->xa, qp->qp_num, res, GFP_KERNEL); xa 232 drivers/infiniband/core/restrack.c ret = xa_insert(&rt->xa, counter->id, res, GFP_KERNEL); xa 235 drivers/infiniband/core/restrack.c ret = xa_alloc_cyclic(&rt->xa, &res->id, res, xa_limit_32b, xa 296 drivers/infiniband/core/restrack.c xa_lock(&rt->xa); xa 297 drivers/infiniband/core/restrack.c res = xa_load(&rt->xa, id); xa 300 drivers/infiniband/core/restrack.c xa_unlock(&rt->xa); xa 335 drivers/infiniband/core/restrack.c old = xa_erase(&rt->xa, res->id); xa 19 drivers/infiniband/core/restrack.h struct xarray xa; xa 567 drivers/infiniband/hw/hns/hns_roce_device.h struct xarray xa; xa 145 drivers/infiniband/hw/hns/hns_roce_qp.c struct xarray *xa = &hr_dev->qp_table_xa; xa 155 drivers/infiniband/hw/hns/hns_roce_qp.c ret = xa_err(xa_store_irq(xa, hr_qp->qpn & (hr_dev->caps.num_qps - 1), xa 236 drivers/infiniband/hw/hns/hns_roce_qp.c struct xarray *xa = &hr_dev->qp_table_xa; xa 239 drivers/infiniband/hw/hns/hns_roce_qp.c xa_lock_irqsave(xa, flags); xa 240 drivers/infiniband/hw/hns/hns_roce_qp.c __xa_erase(xa, hr_qp->qpn & (hr_dev->caps.num_qps - 1)); xa 241 drivers/infiniband/hw/hns/hns_roce_qp.c xa_unlock_irqrestore(xa, flags); xa 17 drivers/infiniband/hw/hns/hns_roce_srq.c xa_lock(&srq_table->xa); xa 18 drivers/infiniband/hw/hns/hns_roce_srq.c srq = xa_load(&srq_table->xa, srqn & (hr_dev->caps.num_srqs - 1)); xa 21 drivers/infiniband/hw/hns/hns_roce_srq.c xa_unlock(&srq_table->xa); xa 123 drivers/infiniband/hw/hns/hns_roce_srq.c ret = xa_err(xa_store(&srq_table->xa, srq->srqn, srq, GFP_KERNEL)); xa 147 drivers/infiniband/hw/hns/hns_roce_srq.c xa_erase(&srq_table->xa, srq->srqn); xa 168 drivers/infiniband/hw/hns/hns_roce_srq.c xa_erase(&srq_table->xa, srq->srqn); xa 467 drivers/infiniband/hw/hns/hns_roce_srq.c xa_init(&srq_table->xa); xa 111 drivers/infiniband/sw/siw/siw.h struct xarray xa; xa 47 drivers/infiniband/sw/siw/siw_verbs.c if (xa_alloc_cyclic(&uctx->xa, &key, uobj, limit, &uctx->uobj_nextkey, xa 61 drivers/infiniband/sw/siw/siw_verbs.c struct siw_uobj *uobj = xa_load(&uctx->xa, off); xa 108 drivers/infiniband/sw/siw/siw_verbs.c xa_init_flags(&ctx->xa, XA_FLAGS_ALLOC); xa 146 drivers/infiniband/sw/siw/siw_verbs.c xa_for_each(&uctx->xa, index, entry) { xa 147 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&uctx->xa, index)); xa 150 drivers/infiniband/sw/siw/siw_verbs.c xa_destroy(&uctx->xa); xa 505 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&uctx->xa, qp->xa_sq_index)); xa 507 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&uctx->xa, qp->xa_rq_index)); xa 622 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&uctx->xa, qp->xa_sq_index)); xa 624 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&uctx->xa, qp->xa_rq_index)); xa 1094 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&ctx->xa, cq->xa_cq_index)); xa 1188 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&ctx->xa, cq->xa_cq_index)); xa 1639 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&ctx->xa, srq->xa_srq_index)); xa 1726 drivers/infiniband/sw/siw/siw_verbs.c kfree(xa_erase(&ctx->xa, srq->xa_srq_index)); xa 2963 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c static int interpolate(int x, int xa, int xb, int ya, int yb) xa 2967 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c bf = 2 * (yb - ya) * (x - xa) / (xb - xa); xa 138 fs/dax.c struct xarray *xa; xa 160 fs/dax.c key->xa = xas->xa; xa 163 fs/dax.c hash = hash_long((unsigned long)xas->xa ^ index, DAX_WAIT_TABLE_BITS); xa 174 fs/dax.c if (key->xa != ewait->key.xa || xa 414 fs/dax.c xas.xa = &mapping->i_pages; xa 114 include/linux/cdrom.h int xa; xa 245 include/linux/idr.h struct xarray xa; xa 251 include/linux/idr.h .xa = XARRAY_INIT(name, IDA_INIT_FLAGS) \ xa 311 include/linux/idr.h xa_init_flags(&ida->xa, IDA_INIT_FLAGS); xa 320 include/linux/idr.h return xa_empty(&ida->xa); xa 355 include/linux/xarray.h void *xa_find(struct xarray *xa, unsigned long *index, xa 357 include/linux/xarray.h void *xa_find_after(struct xarray *xa, unsigned long *index, xa 374 include/linux/xarray.h static inline void xa_init_flags(struct xarray *xa, gfp_t flags) xa 376 include/linux/xarray.h spin_lock_init(&xa->xa_lock); xa 377 include/linux/xarray.h xa->xa_flags = flags; xa 378 include/linux/xarray.h xa->xa_head = NULL; xa 389 include/linux/xarray.h static inline void xa_init(struct xarray *xa) xa 391 include/linux/xarray.h xa_init_flags(xa, 0); xa 401 include/linux/xarray.h static inline bool xa_empty(const struct xarray *xa) xa 403 include/linux/xarray.h return xa->xa_head == NULL; xa 414 include/linux/xarray.h static inline bool xa_marked(const struct xarray *xa, xa_mark_t mark) xa 416 include/linux/xarray.h return xa->xa_flags & XA_FLAGS_MARK(mark); xa 442 include/linux/xarray.h #define xa_for_each_start(xa, index, entry, start) \ xa 444 include/linux/xarray.h entry = xa_find(xa, &index, ULONG_MAX, XA_PRESENT); \ xa 446 include/linux/xarray.h entry = xa_find_after(xa, &index, ULONG_MAX, XA_PRESENT)) xa 469 include/linux/xarray.h #define xa_for_each(xa, index, entry) \ xa 470 include/linux/xarray.h xa_for_each_start(xa, index, entry, 0) xa 496 include/linux/xarray.h #define xa_for_each_marked(xa, index, entry, filter) \ xa 497 include/linux/xarray.h for (index = 0, entry = xa_find(xa, &index, ULONG_MAX, filter); \ xa 498 include/linux/xarray.h entry; entry = xa_find_after(xa, &index, ULONG_MAX, filter)) xa 500 include/linux/xarray.h #define xa_trylock(xa) spin_trylock(&(xa)->xa_lock) xa 501 include/linux/xarray.h #define xa_lock(xa) spin_lock(&(xa)->xa_lock) xa 502 include/linux/xarray.h #define xa_unlock(xa) spin_unlock(&(xa)->xa_lock) xa 503 include/linux/xarray.h #define xa_lock_bh(xa) spin_lock_bh(&(xa)->xa_lock) xa 504 include/linux/xarray.h #define xa_unlock_bh(xa) spin_unlock_bh(&(xa)->xa_lock) xa 505 include/linux/xarray.h #define xa_lock_irq(xa) spin_lock_irq(&(xa)->xa_lock) xa 506 include/linux/xarray.h #define xa_unlock_irq(xa) spin_unlock_irq(&(xa)->xa_lock) xa 507 include/linux/xarray.h #define xa_lock_irqsave(xa, flags) \ xa 508 include/linux/xarray.h spin_lock_irqsave(&(xa)->xa_lock, flags) xa 509 include/linux/xarray.h #define xa_unlock_irqrestore(xa, flags) \ xa 510 include/linux/xarray.h spin_unlock_irqrestore(&(xa)->xa_lock, flags) xa 546 include/linux/xarray.h static inline void *xa_store_bh(struct xarray *xa, unsigned long index, xa 551 include/linux/xarray.h xa_lock_bh(xa); xa 552 include/linux/xarray.h curr = __xa_store(xa, index, entry, gfp); xa 553 include/linux/xarray.h xa_unlock_bh(xa); xa 572 include/linux/xarray.h static inline void *xa_store_irq(struct xarray *xa, unsigned long index, xa 577 include/linux/xarray.h xa_lock_irq(xa); xa 578 include/linux/xarray.h curr = __xa_store(xa, index, entry, gfp); xa 579 include/linux/xarray.h xa_unlock_irq(xa); xa 597 include/linux/xarray.h static inline void *xa_erase_bh(struct xarray *xa, unsigned long index) xa 601 include/linux/xarray.h xa_lock_bh(xa); xa 602 include/linux/xarray.h entry = __xa_erase(xa, index); xa 603 include/linux/xarray.h xa_unlock_bh(xa); xa 621 include/linux/xarray.h static inline void *xa_erase_irq(struct xarray *xa, unsigned long index) xa 625 include/linux/xarray.h xa_lock_irq(xa); xa 626 include/linux/xarray.h entry = __xa_erase(xa, index); xa 627 include/linux/xarray.h xa_unlock_irq(xa); xa 647 include/linux/xarray.h static inline void *xa_cmpxchg(struct xarray *xa, unsigned long index, xa 652 include/linux/xarray.h xa_lock(xa); xa 653 include/linux/xarray.h curr = __xa_cmpxchg(xa, index, old, entry, gfp); xa 654 include/linux/xarray.h xa_unlock(xa); xa 674 include/linux/xarray.h static inline void *xa_cmpxchg_bh(struct xarray *xa, unsigned long index, xa 679 include/linux/xarray.h xa_lock_bh(xa); xa 680 include/linux/xarray.h curr = __xa_cmpxchg(xa, index, old, entry, gfp); xa 681 include/linux/xarray.h xa_unlock_bh(xa); xa 701 include/linux/xarray.h static inline void *xa_cmpxchg_irq(struct xarray *xa, unsigned long index, xa 706 include/linux/xarray.h xa_lock_irq(xa); xa 707 include/linux/xarray.h curr = __xa_cmpxchg(xa, index, old, entry, gfp); xa 708 include/linux/xarray.h xa_unlock_irq(xa); xa 730 include/linux/xarray.h static inline int __must_check xa_insert(struct xarray *xa, xa 735 include/linux/xarray.h xa_lock(xa); xa 736 include/linux/xarray.h err = __xa_insert(xa, index, entry, gfp); xa 737 include/linux/xarray.h xa_unlock(xa); xa 759 include/linux/xarray.h static inline int __must_check xa_insert_bh(struct xarray *xa, xa 764 include/linux/xarray.h xa_lock_bh(xa); xa 765 include/linux/xarray.h err = __xa_insert(xa, index, entry, gfp); xa 766 include/linux/xarray.h xa_unlock_bh(xa); xa 788 include/linux/xarray.h static inline int __must_check xa_insert_irq(struct xarray *xa, xa 793 include/linux/xarray.h xa_lock_irq(xa); xa 794 include/linux/xarray.h err = __xa_insert(xa, index, entry, gfp); xa 795 include/linux/xarray.h xa_unlock_irq(xa); xa 817 include/linux/xarray.h static inline __must_check int xa_alloc(struct xarray *xa, u32 *id, xa 822 include/linux/xarray.h xa_lock(xa); xa 823 include/linux/xarray.h err = __xa_alloc(xa, id, entry, limit, gfp); xa 824 include/linux/xarray.h xa_unlock(xa); xa 846 include/linux/xarray.h static inline int __must_check xa_alloc_bh(struct xarray *xa, u32 *id, xa 851 include/linux/xarray.h xa_lock_bh(xa); xa 852 include/linux/xarray.h err = __xa_alloc(xa, id, entry, limit, gfp); xa 853 include/linux/xarray.h xa_unlock_bh(xa); xa 875 include/linux/xarray.h static inline int __must_check xa_alloc_irq(struct xarray *xa, u32 *id, xa 880 include/linux/xarray.h xa_lock_irq(xa); xa 881 include/linux/xarray.h err = __xa_alloc(xa, id, entry, limit, gfp); xa 882 include/linux/xarray.h xa_unlock_irq(xa); xa 908 include/linux/xarray.h static inline int xa_alloc_cyclic(struct xarray *xa, u32 *id, void *entry, xa 913 include/linux/xarray.h xa_lock(xa); xa 914 include/linux/xarray.h err = __xa_alloc_cyclic(xa, id, entry, limit, next, gfp); xa 915 include/linux/xarray.h xa_unlock(xa); xa 941 include/linux/xarray.h static inline int xa_alloc_cyclic_bh(struct xarray *xa, u32 *id, void *entry, xa 946 include/linux/xarray.h xa_lock_bh(xa); xa 947 include/linux/xarray.h err = __xa_alloc_cyclic(xa, id, entry, limit, next, gfp); xa 948 include/linux/xarray.h xa_unlock_bh(xa); xa 974 include/linux/xarray.h static inline int xa_alloc_cyclic_irq(struct xarray *xa, u32 *id, void *entry, xa 979 include/linux/xarray.h xa_lock_irq(xa); xa 980 include/linux/xarray.h err = __xa_alloc_cyclic(xa, id, entry, limit, next, gfp); xa 981 include/linux/xarray.h xa_unlock_irq(xa); xa 1005 include/linux/xarray.h int xa_reserve(struct xarray *xa, unsigned long index, gfp_t gfp) xa 1007 include/linux/xarray.h return xa_err(xa_cmpxchg(xa, index, NULL, XA_ZERO_ENTRY, gfp)); xa 1023 include/linux/xarray.h int xa_reserve_bh(struct xarray *xa, unsigned long index, gfp_t gfp) xa 1025 include/linux/xarray.h return xa_err(xa_cmpxchg_bh(xa, index, NULL, XA_ZERO_ENTRY, gfp)); xa 1041 include/linux/xarray.h int xa_reserve_irq(struct xarray *xa, unsigned long index, gfp_t gfp) xa 1043 include/linux/xarray.h return xa_err(xa_cmpxchg_irq(xa, index, NULL, XA_ZERO_ENTRY, gfp)); xa 1055 include/linux/xarray.h static inline void xa_release(struct xarray *xa, unsigned long index) xa 1057 include/linux/xarray.h xa_cmpxchg(xa, index, XA_ZERO_ENTRY, NULL, 0); xa 1109 include/linux/xarray.h #define XA_BUG_ON(xa, x) do { \ xa 1111 include/linux/xarray.h xa_dump(xa); \ xa 1122 include/linux/xarray.h #define XA_BUG_ON(xa, x) do { } while (0) xa 1127 include/linux/xarray.h static inline void *xa_head(const struct xarray *xa) xa 1129 include/linux/xarray.h return rcu_dereference_check(xa->xa_head, xa 1130 include/linux/xarray.h lockdep_is_held(&xa->xa_lock)); xa 1134 include/linux/xarray.h static inline void *xa_head_locked(const struct xarray *xa) xa 1136 include/linux/xarray.h return rcu_dereference_protected(xa->xa_head, xa 1137 include/linux/xarray.h lockdep_is_held(&xa->xa_lock)); xa 1141 include/linux/xarray.h static inline void *xa_entry(const struct xarray *xa, xa 1146 include/linux/xarray.h lockdep_is_held(&xa->xa_lock)); xa 1150 include/linux/xarray.h static inline void *xa_entry_locked(const struct xarray *xa, xa 1155 include/linux/xarray.h lockdep_is_held(&xa->xa_lock)); xa 1159 include/linux/xarray.h static inline struct xa_node *xa_parent(const struct xarray *xa, xa 1163 include/linux/xarray.h lockdep_is_held(&xa->xa_lock)); xa 1167 include/linux/xarray.h static inline struct xa_node *xa_parent_locked(const struct xarray *xa, xa 1171 include/linux/xarray.h lockdep_is_held(&xa->xa_lock)); xa 1272 include/linux/xarray.h struct xarray *xa; xa 1292 include/linux/xarray.h .xa = array, \ xa 1331 include/linux/xarray.h #define xas_marked(xas, mark) xa_marked((xas)->xa, (mark)) xa 1332 include/linux/xarray.h #define xas_trylock(xas) xa_trylock((xas)->xa) xa 1333 include/linux/xarray.h #define xas_lock(xas) xa_lock((xas)->xa) xa 1334 include/linux/xarray.h #define xas_unlock(xas) xa_unlock((xas)->xa) xa 1335 include/linux/xarray.h #define xas_lock_bh(xas) xa_lock_bh((xas)->xa) xa 1336 include/linux/xarray.h #define xas_unlock_bh(xas) xa_unlock_bh((xas)->xa) xa 1337 include/linux/xarray.h #define xas_lock_irq(xas) xa_lock_irq((xas)->xa) xa 1338 include/linux/xarray.h #define xas_unlock_irq(xas) xa_unlock_irq((xas)->xa) xa 1340 include/linux/xarray.h xa_lock_irqsave((xas)->xa, flags) xa 1342 include/linux/xarray.h xa_unlock_irqrestore((xas)->xa, flags) xa 1492 include/linux/xarray.h return xa_entry(xas->xa, node, xas->xa_offset); xa 1493 include/linux/xarray.h return xa_head(xas->xa); xa 1569 include/linux/xarray.h entry = xa_entry(xas->xa, node, xas->xa_offset + 1); xa 1628 include/linux/xarray.h entry = xa_entry(xas->xa, node, offset); xa 1722 include/linux/xarray.h return xa_entry(xas->xa, node, xas->xa_offset); xa 1751 include/linux/xarray.h return xa_entry(xas->xa, node, xas->xa_offset); xa 320 include/trace/events/xdp.h TP_PROTO(const struct xdp_mem_allocator *xa), xa 322 include/trace/events/xdp.h TP_ARGS(xa), xa 325 include/trace/events/xdp.h __field(const struct xdp_mem_allocator *, xa) xa 332 include/trace/events/xdp.h __entry->xa = xa; xa 333 include/trace/events/xdp.h __entry->mem_id = xa->mem.id; xa 334 include/trace/events/xdp.h __entry->mem_type = xa->mem.type; xa 335 include/trace/events/xdp.h __entry->allocator = xa->allocator; xa 347 include/trace/events/xdp.h TP_PROTO(const struct xdp_mem_allocator *xa, xa 350 include/trace/events/xdp.h TP_ARGS(xa, rxq), xa 353 include/trace/events/xdp.h __field(const struct xdp_mem_allocator *, xa) xa 362 include/trace/events/xdp.h __entry->xa = xa; xa 363 include/trace/events/xdp.h __entry->mem_id = xa->mem.id; xa 364 include/trace/events/xdp.h __entry->mem_type = xa->mem.type; xa 365 include/trace/events/xdp.h __entry->allocator = xa->allocator; xa 382 lib/idr.c XA_STATE(xas, &ida->xa, min / IDA_BITMAP_BITS); xa 486 lib/idr.c XA_STATE(xas, &ida->xa, id / IDA_BITMAP_BITS); xa 538 lib/idr.c XA_STATE(xas, &ida->xa, 0); xa 589 lib/idr.c struct xarray *xa = &ida->xa; xa 590 lib/idr.c pr_debug("ida: %p node %p free %d\n", ida, xa->xa_head, xa 591 lib/idr.c xa->xa_flags >> ROOT_TAG_SHIFT); xa 592 lib/idr.c ida_dump_entry(xa->xa_head, 0); xa 20 lib/test_xarray.c void xa_dump(const struct xarray *xa) { } xa 23 lib/test_xarray.c #define XA_BUG_ON(xa, x) do { \ xa 27 lib/test_xarray.c xa_dump(xa); \ xa 40 lib/test_xarray.c static void *xa_store_index(struct xarray *xa, unsigned long index, gfp_t gfp) xa 42 lib/test_xarray.c return xa_store(xa, index, xa_mk_index(index), gfp); xa 45 lib/test_xarray.c static void xa_insert_index(struct xarray *xa, unsigned long index) xa 47 lib/test_xarray.c XA_BUG_ON(xa, xa_insert(xa, index, xa_mk_index(index), xa 51 lib/test_xarray.c static void xa_alloc_index(struct xarray *xa, unsigned long index, gfp_t gfp) xa 55 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_index(index), xa_limit_32b, xa 57 lib/test_xarray.c XA_BUG_ON(xa, id != index); xa 60 lib/test_xarray.c static void xa_erase_index(struct xarray *xa, unsigned long index) xa 62 lib/test_xarray.c XA_BUG_ON(xa, xa_erase(xa, index) != xa_mk_index(index)); xa 63 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, index) != NULL); xa 71 lib/test_xarray.c static void *xa_store_order(struct xarray *xa, unsigned long index, xa 74 lib/test_xarray.c XA_STATE_ORDER(xas, xa, index, order); xa 86 lib/test_xarray.c static noinline void check_xa_err(struct xarray *xa) xa 88 lib/test_xarray.c XA_BUG_ON(xa, xa_err(xa_store_index(xa, 0, GFP_NOWAIT)) != 0); xa 89 lib/test_xarray.c XA_BUG_ON(xa, xa_err(xa_erase(xa, 0)) != 0); xa 92 lib/test_xarray.c XA_BUG_ON(xa, xa_err(xa_store_index(xa, 1, GFP_NOWAIT)) != -ENOMEM); xa 93 lib/test_xarray.c XA_BUG_ON(xa, xa_err(xa_store_index(xa, 1, GFP_NOWAIT)) != -ENOMEM); xa 95 lib/test_xarray.c XA_BUG_ON(xa, xa_err(xa_store_index(xa, 1, GFP_KERNEL)) != 0); xa 96 lib/test_xarray.c XA_BUG_ON(xa, xa_err(xa_store(xa, 1, xa_mk_value(0), GFP_KERNEL)) != 0); xa 97 lib/test_xarray.c XA_BUG_ON(xa, xa_err(xa_erase(xa, 1)) != 0); xa 102 lib/test_xarray.c static noinline void check_xas_retry(struct xarray *xa) xa 104 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 107 lib/test_xarray.c xa_store_index(xa, 0, GFP_KERNEL); xa 108 lib/test_xarray.c xa_store_index(xa, 1, GFP_KERNEL); xa 111 lib/test_xarray.c XA_BUG_ON(xa, xas_find(&xas, ULONG_MAX) != xa_mk_value(0)); xa 112 lib/test_xarray.c xa_erase_index(xa, 1); xa 113 lib/test_xarray.c XA_BUG_ON(xa, !xa_is_retry(xas_reload(&xas))); xa 114 lib/test_xarray.c XA_BUG_ON(xa, xas_retry(&xas, NULL)); xa 115 lib/test_xarray.c XA_BUG_ON(xa, xas_retry(&xas, xa_mk_value(0))); xa 117 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node != XAS_RESTART); xa 118 lib/test_xarray.c XA_BUG_ON(xa, xas_next_entry(&xas, ULONG_MAX) != xa_mk_value(0)); xa 119 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node != NULL); xa 122 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, 1, GFP_KERNEL) != NULL); xa 125 lib/test_xarray.c XA_BUG_ON(xa, !xa_is_internal(xas_reload(&xas))); xa 127 lib/test_xarray.c XA_BUG_ON(xa, xas_next_entry(&xas, ULONG_MAX) != xa_mk_value(0)); xa 143 lib/test_xarray.c xa_erase_index(xa, 0); xa 144 lib/test_xarray.c xa_erase_index(xa, 1); xa 147 lib/test_xarray.c static noinline void check_xa_load(struct xarray *xa) xa 153 lib/test_xarray.c void *entry = xa_load(xa, j); xa 155 lib/test_xarray.c XA_BUG_ON(xa, xa_to_value(entry) != j); xa 157 lib/test_xarray.c XA_BUG_ON(xa, entry); xa 159 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, i, GFP_KERNEL) != NULL); xa 164 lib/test_xarray.c void *entry = xa_load(xa, j); xa 166 lib/test_xarray.c XA_BUG_ON(xa, xa_to_value(entry) != j); xa 168 lib/test_xarray.c XA_BUG_ON(xa, entry); xa 170 lib/test_xarray.c xa_erase_index(xa, i); xa 172 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 175 lib/test_xarray.c static noinline void check_xa_mark_1(struct xarray *xa, unsigned long index) xa 181 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, index, XA_MARK_0)); xa 182 lib/test_xarray.c xa_set_mark(xa, index, XA_MARK_0); xa 183 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, index, XA_MARK_0)); xa 186 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, index, GFP_KERNEL) != NULL); xa 187 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, index, XA_MARK_0)); xa 188 lib/test_xarray.c xa_set_mark(xa, index, XA_MARK_0); xa 189 lib/test_xarray.c XA_BUG_ON(xa, !xa_get_mark(xa, index, XA_MARK_0)); xa 192 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, index + 1, XA_MARK_0)); xa 193 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, index, XA_MARK_1)); xa 196 lib/test_xarray.c xa_erase_index(xa, index); xa 197 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 198 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, index, XA_MARK_0)); xa 199 lib/test_xarray.c xa_set_mark(xa, index, XA_MARK_0); xa 200 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, index, XA_MARK_0)); xa 212 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, index + 1, GFP_KERNEL)); xa 213 lib/test_xarray.c xa_set_mark(xa, index + 1, XA_MARK_0); xa 214 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, index + 2, GFP_KERNEL)); xa 215 lib/test_xarray.c xa_set_mark(xa, index + 2, XA_MARK_2); xa 216 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, next, GFP_KERNEL)); xa 217 lib/test_xarray.c xa_store_order(xa, index, order, xa_mk_index(index), xa 220 lib/test_xarray.c XA_STATE(xas, xa, i); xa 224 lib/test_xarray.c XA_BUG_ON(xa, !xa_get_mark(xa, i, XA_MARK_0)); xa 225 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, i, XA_MARK_1)); xa 226 lib/test_xarray.c XA_BUG_ON(xa, !xa_get_mark(xa, i, XA_MARK_2)); xa 233 lib/test_xarray.c XA_BUG_ON(xa, seen != 2); xa 242 lib/test_xarray.c XA_BUG_ON(xa, seen != 1); xa 244 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, next, XA_MARK_0)); xa 245 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, next, XA_MARK_1)); xa 246 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, next, XA_MARK_2)); xa 247 lib/test_xarray.c xa_erase_index(xa, index); xa 248 lib/test_xarray.c xa_erase_index(xa, next); xa 249 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 251 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 254 lib/test_xarray.c static noinline void check_xa_mark_2(struct xarray *xa) xa 256 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 261 lib/test_xarray.c xa_store_index(xa, 0, GFP_KERNEL); xa 262 lib/test_xarray.c xa_set_mark(xa, 0, XA_MARK_0); xa 267 lib/test_xarray.c XA_BUG_ON(xa, !xa_get_mark(xa, 0, XA_MARK_0) == 0); xa 270 lib/test_xarray.c xa_store_index(xa, index, GFP_KERNEL); xa 271 lib/test_xarray.c xa_set_mark(xa, index, XA_MARK_0); xa 279 lib/test_xarray.c XA_BUG_ON(xa, count != 1000); xa 284 lib/test_xarray.c XA_BUG_ON(xa, !xa_get_mark(xa, xas.xa_index, XA_MARK_0)); xa 285 lib/test_xarray.c XA_BUG_ON(xa, !xas_get_mark(&xas, XA_MARK_0)); xa 289 lib/test_xarray.c xa_destroy(xa); xa 292 lib/test_xarray.c static noinline void check_xa_mark(struct xarray *xa) xa 297 lib/test_xarray.c check_xa_mark_1(xa, index); xa 299 lib/test_xarray.c check_xa_mark_2(xa); xa 302 lib/test_xarray.c static noinline void check_xa_shrink(struct xarray *xa) xa 304 lib/test_xarray.c XA_STATE(xas, xa, 1); xa 309 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 310 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, 0, GFP_KERNEL) != NULL); xa 311 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, 1, GFP_KERNEL) != NULL); xa 318 lib/test_xarray.c XA_BUG_ON(xa, xas_load(&xas) != xa_mk_value(1)); xa 320 lib/test_xarray.c XA_BUG_ON(xa, xa_entry_locked(xa, node, 0) != xa_mk_value(0)); xa 321 lib/test_xarray.c XA_BUG_ON(xa, xas_store(&xas, NULL) != xa_mk_value(1)); xa 322 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 1) != NULL); xa 323 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node != XAS_BOUNDS); xa 324 lib/test_xarray.c XA_BUG_ON(xa, xa_entry_locked(xa, node, 0) != XA_RETRY_ENTRY); xa 325 lib/test_xarray.c XA_BUG_ON(xa, xas_load(&xas) != NULL); xa 327 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 0) != xa_mk_value(0)); xa 328 lib/test_xarray.c xa_erase_index(xa, 0); xa 329 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 333 lib/test_xarray.c xa_store_order(xa, 0, order, xa_mk_value(0), GFP_KERNEL); xa 334 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, max) != xa_mk_value(0)); xa 335 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, max + 1) != NULL); xa 337 lib/test_xarray.c node = xa_head(xa); xa 339 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, ULONG_MAX, GFP_KERNEL) != xa 342 lib/test_xarray.c XA_BUG_ON(xa, xa_head(xa) == node); xa 344 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, max + 1) != NULL); xa 345 lib/test_xarray.c xa_erase_index(xa, ULONG_MAX); xa 346 lib/test_xarray.c XA_BUG_ON(xa, xa->xa_head != node); xa 347 lib/test_xarray.c xa_erase_index(xa, 0); xa 351 lib/test_xarray.c static noinline void check_insert(struct xarray *xa) xa 356 lib/test_xarray.c xa_insert_index(xa, i); xa 357 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, i - 1) != NULL); xa 358 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, i + 1) != NULL); xa 359 lib/test_xarray.c xa_erase_index(xa, i); xa 363 lib/test_xarray.c xa_insert_index(xa, 1UL << i); xa 364 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, (1UL << i) - 1) != NULL); xa 365 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, (1UL << i) + 1) != NULL); xa 366 lib/test_xarray.c xa_erase_index(xa, 1UL << i); xa 368 lib/test_xarray.c xa_insert_index(xa, (1UL << i) - 1); xa 369 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, (1UL << i) - 2) != NULL); xa 370 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 1UL << i) != NULL); xa 371 lib/test_xarray.c xa_erase_index(xa, (1UL << i) - 1); xa 374 lib/test_xarray.c xa_insert_index(xa, ~0UL); xa 375 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 0UL) != NULL); xa 376 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, ~1UL) != NULL); xa 377 lib/test_xarray.c xa_erase_index(xa, ~0UL); xa 379 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 382 lib/test_xarray.c static noinline void check_cmpxchg(struct xarray *xa) xa 388 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 389 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, 12345678, GFP_KERNEL) != NULL); xa 390 lib/test_xarray.c XA_BUG_ON(xa, xa_insert(xa, 12345678, xa, GFP_KERNEL) != -EBUSY); xa 391 lib/test_xarray.c XA_BUG_ON(xa, xa_cmpxchg(xa, 12345678, SIX, FIVE, GFP_KERNEL) != LOTS); xa 392 lib/test_xarray.c XA_BUG_ON(xa, xa_cmpxchg(xa, 12345678, LOTS, FIVE, GFP_KERNEL) != LOTS); xa 393 lib/test_xarray.c XA_BUG_ON(xa, xa_cmpxchg(xa, 12345678, FIVE, LOTS, GFP_KERNEL) != FIVE); xa 394 lib/test_xarray.c XA_BUG_ON(xa, xa_cmpxchg(xa, 5, FIVE, NULL, GFP_KERNEL) != NULL); xa 395 lib/test_xarray.c XA_BUG_ON(xa, xa_cmpxchg(xa, 5, NULL, FIVE, GFP_KERNEL) != NULL); xa 396 lib/test_xarray.c xa_erase_index(xa, 12345678); xa 397 lib/test_xarray.c xa_erase_index(xa, 5); xa 398 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 401 lib/test_xarray.c static noinline void check_reserve(struct xarray *xa) xa 408 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 409 lib/test_xarray.c XA_BUG_ON(xa, xa_reserve(xa, 12345678, GFP_KERNEL) != 0); xa 410 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 411 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 12345678)); xa 412 lib/test_xarray.c xa_release(xa, 12345678); xa 413 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 416 lib/test_xarray.c XA_BUG_ON(xa, xa_reserve(xa, 12345678, GFP_KERNEL) != 0); xa 417 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, 12345678, GFP_NOWAIT) != NULL); xa 418 lib/test_xarray.c xa_release(xa, 12345678); xa 419 lib/test_xarray.c xa_erase_index(xa, 12345678); xa 420 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 423 lib/test_xarray.c XA_BUG_ON(xa, xa_reserve(xa, 12345678, GFP_KERNEL) != 0); xa 424 lib/test_xarray.c XA_BUG_ON(xa, xa_cmpxchg(xa, 12345678, XA_ZERO_ENTRY, xa 426 lib/test_xarray.c xa_release(xa, 12345678); xa 427 lib/test_xarray.c xa_erase_index(xa, 12345678); xa 428 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 431 lib/test_xarray.c XA_BUG_ON(xa, xa_reserve(xa, 12345678, GFP_KERNEL) != 0); xa 432 lib/test_xarray.c XA_BUG_ON(xa, xa_insert(xa, 12345678, xa_mk_value(12345678), 0) != xa 434 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 435 lib/test_xarray.c XA_BUG_ON(xa, xa_erase(xa, 12345678) != NULL); xa 436 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 439 lib/test_xarray.c xa_store_index(xa, 5, GFP_KERNEL); xa 440 lib/test_xarray.c XA_BUG_ON(xa, xa_reserve(xa, 6, GFP_KERNEL) != 0); xa 441 lib/test_xarray.c xa_store_index(xa, 7, GFP_KERNEL); xa 444 lib/test_xarray.c xa_for_each(xa, index, entry) { xa 445 lib/test_xarray.c XA_BUG_ON(xa, index != 5 && index != 7); xa 448 lib/test_xarray.c XA_BUG_ON(xa, count != 2); xa 451 lib/test_xarray.c if (xa->xa_flags & XA_FLAGS_ALLOC) { xa 454 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_value(8), xa 456 lib/test_xarray.c XA_BUG_ON(xa, id != 8); xa 458 lib/test_xarray.c xa_release(xa, 6); xa 459 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_value(6), xa 461 lib/test_xarray.c XA_BUG_ON(xa, id != 6); xa 464 lib/test_xarray.c xa_destroy(xa); xa 467 lib/test_xarray.c static noinline void check_xas_erase(struct xarray *xa) xa 469 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 496 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(j)); xa 501 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 506 lib/test_xarray.c static noinline void check_multi_store_1(struct xarray *xa, unsigned long index, xa 509 lib/test_xarray.c XA_STATE(xas, xa, index); xa 513 lib/test_xarray.c xa_store_order(xa, index, order, xa_mk_index(index), GFP_KERNEL); xa 514 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, min) != xa_mk_index(index)); xa 515 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, max - 1) != xa_mk_index(index)); xa 516 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, max) != NULL); xa 517 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, min - 1) != NULL); xa 520 lib/test_xarray.c XA_BUG_ON(xa, xas_store(&xas, xa_mk_index(min)) != xa_mk_index(index)); xa 522 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, min) != xa_mk_index(min)); xa 523 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, max - 1) != xa_mk_index(min)); xa 524 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, max) != NULL); xa 525 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, min - 1) != NULL); xa 527 lib/test_xarray.c xa_erase_index(xa, min); xa 528 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 531 lib/test_xarray.c static noinline void check_multi_store_2(struct xarray *xa, unsigned long index, xa 534 lib/test_xarray.c XA_STATE(xas, xa, index); xa 535 lib/test_xarray.c xa_store_order(xa, index, order, xa_mk_value(0), GFP_KERNEL); xa 538 lib/test_xarray.c XA_BUG_ON(xa, xas_store(&xas, xa_mk_value(1)) != xa_mk_value(0)); xa 539 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != index); xa 540 lib/test_xarray.c XA_BUG_ON(xa, xas_store(&xas, NULL) != xa_mk_value(1)); xa 542 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 545 lib/test_xarray.c static noinline void check_multi_store_3(struct xarray *xa, unsigned long index, xa 548 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 552 lib/test_xarray.c xa_store_order(xa, index, order, xa_mk_index(index), GFP_KERNEL); xa 556 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(index)); xa 559 lib/test_xarray.c XA_BUG_ON(xa, n != 1); xa 562 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(index)); xa 565 lib/test_xarray.c XA_BUG_ON(xa, n != 2); xa 568 lib/test_xarray.c xa_destroy(xa); xa 572 lib/test_xarray.c static noinline void check_multi_store(struct xarray *xa) xa 579 lib/test_xarray.c xa_store_order(xa, 0, 1, xa_mk_value(0), GFP_KERNEL); xa 580 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 0) != xa_mk_value(0)); xa 581 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 1) != xa_mk_value(0)); xa 582 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 2) != NULL); xa 584 lib/test_xarray.c XA_BUG_ON(xa, xa_to_node(xa_head(xa))->count != 2); xa 585 lib/test_xarray.c XA_BUG_ON(xa, xa_to_node(xa_head(xa))->nr_values != 2); xa 589 lib/test_xarray.c xa_store(xa, 3, xa, GFP_KERNEL); xa 590 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 0) != xa_mk_value(0)); xa 591 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 1) != xa_mk_value(0)); xa 592 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 2) != NULL); xa 594 lib/test_xarray.c XA_BUG_ON(xa, xa_to_node(xa_head(xa))->count != 3); xa 595 lib/test_xarray.c XA_BUG_ON(xa, xa_to_node(xa_head(xa))->nr_values != 2); xa 599 lib/test_xarray.c xa_store_order(xa, 0, 2, xa_mk_value(1), GFP_KERNEL); xa 600 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 0) != xa_mk_value(1)); xa 601 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 1) != xa_mk_value(1)); xa 602 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 2) != xa_mk_value(1)); xa 603 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 3) != xa_mk_value(1)); xa 604 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, 4) != NULL); xa 606 lib/test_xarray.c XA_BUG_ON(xa, xa_to_node(xa_head(xa))->count != 4); xa 607 lib/test_xarray.c XA_BUG_ON(xa, xa_to_node(xa_head(xa))->nr_values != 4); xa 611 lib/test_xarray.c xa_store_order(xa, 0, BITS_PER_LONG - 1, NULL, GFP_KERNEL); xa 612 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 615 lib/test_xarray.c xa_store_index(xa, 1, GFP_KERNEL); xa 616 lib/test_xarray.c xa_store_index(xa, 2, GFP_KERNEL); xa 617 lib/test_xarray.c xa_store_order(xa, 0, 2, NULL, GFP_KERNEL); xa 618 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 622 lib/test_xarray.c xa_store_order(xa, 0, i, xa_mk_index(i), GFP_KERNEL); xa 623 lib/test_xarray.c xa_store_order(xa, 0, j, xa_mk_index(j), GFP_KERNEL); xa 626 lib/test_xarray.c void *entry = xa_load(xa, (1UL << k) - 1); xa 628 lib/test_xarray.c XA_BUG_ON(xa, entry != NULL); xa 630 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(j)); xa 633 lib/test_xarray.c xa_erase(xa, 0); xa 634 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 639 lib/test_xarray.c check_multi_store_1(xa, 200, i); xa 640 lib/test_xarray.c check_multi_store_1(xa, 0, i); xa 641 lib/test_xarray.c check_multi_store_1(xa, (1UL << i) + 1, i); xa 643 lib/test_xarray.c check_multi_store_2(xa, 4095, 9); xa 646 lib/test_xarray.c check_multi_store_3(xa, 0, i); xa 647 lib/test_xarray.c check_multi_store_3(xa, 1UL << i, i); xa 652 lib/test_xarray.c static noinline void check_xa_alloc_1(struct xarray *xa, unsigned int base) xa 657 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 659 lib/test_xarray.c xa_alloc_index(xa, base, GFP_KERNEL); xa 662 lib/test_xarray.c xa_erase_index(xa, base); xa 663 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 666 lib/test_xarray.c xa_alloc_index(xa, base, GFP_KERNEL); xa 670 lib/test_xarray.c xa_alloc_index(xa, i, GFP_KERNEL); xa 672 lib/test_xarray.c xa_erase_index(xa, i); xa 673 lib/test_xarray.c xa_alloc_index(xa, base, GFP_KERNEL); xa 676 lib/test_xarray.c xa_destroy(xa); xa 679 lib/test_xarray.c xa_alloc_index(xa, base, GFP_KERNEL); xa 682 lib/test_xarray.c xa_alloc_index(xa, base + 1, GFP_KERNEL); xa 683 lib/test_xarray.c xa_erase_index(xa, base + 1); xa 686 lib/test_xarray.c xa_store_index(xa, base + 1, GFP_KERNEL); xa 687 lib/test_xarray.c xa_alloc_index(xa, base + 2, GFP_KERNEL); xa 690 lib/test_xarray.c xa_erase_index(xa, base); xa 691 lib/test_xarray.c xa_alloc_index(xa, base, GFP_KERNEL); xa 693 lib/test_xarray.c xa_erase_index(xa, base + 1); xa 694 lib/test_xarray.c xa_erase_index(xa, base + 2); xa 697 lib/test_xarray.c xa_alloc_index(xa, base + i, GFP_KERNEL); xa 700 lib/test_xarray.c xa_destroy(xa); xa 703 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_index(UINT_MAX - 1), xa 706 lib/test_xarray.c XA_BUG_ON(xa, id != 0xfffffffeU); xa 707 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_index(UINT_MAX), xa 710 lib/test_xarray.c XA_BUG_ON(xa, id != 0xffffffffU); xa 712 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_index(0), xa 715 lib/test_xarray.c XA_BUG_ON(xa, id != 3); xa 716 lib/test_xarray.c xa_destroy(xa); xa 718 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_index(10), XA_LIMIT(10, 5), xa 720 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, 3, GFP_KERNEL) != 0); xa 721 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, xa_mk_index(10), XA_LIMIT(10, 5), xa 723 lib/test_xarray.c xa_erase_index(xa, 3); xa 724 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 727 lib/test_xarray.c static noinline void check_xa_alloc_2(struct xarray *xa, unsigned int base) xa 734 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 735 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, NULL, xa_limit_32b, GFP_KERNEL) != 0); xa 736 lib/test_xarray.c XA_BUG_ON(xa, id != base); xa 737 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 738 lib/test_xarray.c XA_BUG_ON(xa, xa_erase(xa, id) != NULL); xa 739 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 742 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 743 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, NULL, xa_limit_32b, GFP_KERNEL) != 0); xa 744 lib/test_xarray.c XA_BUG_ON(xa, id != base); xa 745 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 746 lib/test_xarray.c xa_destroy(xa); xa 747 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 750 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, NULL, xa_limit_32b, xa 752 lib/test_xarray.c XA_BUG_ON(xa, id != i); xa 755 lib/test_xarray.c XA_BUG_ON(xa, xa_store(xa, 3, xa_mk_index(3), GFP_KERNEL) != NULL); xa 756 lib/test_xarray.c XA_BUG_ON(xa, xa_store(xa, 4, xa_mk_index(4), GFP_KERNEL) != NULL); xa 757 lib/test_xarray.c XA_BUG_ON(xa, xa_store(xa, 4, NULL, GFP_KERNEL) != xa_mk_index(4)); xa 758 lib/test_xarray.c XA_BUG_ON(xa, xa_erase(xa, 5) != NULL); xa 759 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, NULL, xa_limit_32b, GFP_KERNEL) != 0); xa 760 lib/test_xarray.c XA_BUG_ON(xa, id != 5); xa 762 lib/test_xarray.c xa_for_each(xa, index, entry) { xa 763 lib/test_xarray.c xa_erase_index(xa, index); xa 767 lib/test_xarray.c XA_BUG_ON(xa, xa_erase(xa, i) != NULL); xa 768 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 770 lib/test_xarray.c XA_BUG_ON(xa, xa_erase(xa, 8) != NULL); xa 771 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 772 lib/test_xarray.c XA_BUG_ON(xa, xa_erase(xa, base + 9) != NULL); xa 773 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 775 lib/test_xarray.c xa_destroy(xa); xa 778 lib/test_xarray.c static noinline void check_xa_alloc_3(struct xarray *xa, unsigned int base) xa 786 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc_cyclic(xa, &id, xa_mk_index(1), limit, xa 788 lib/test_xarray.c XA_BUG_ON(xa, id != 1); xa 791 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc_cyclic(xa, &id, xa_mk_index(0x3ffd), limit, xa 793 lib/test_xarray.c XA_BUG_ON(xa, id != 0x3ffd); xa 794 lib/test_xarray.c xa_erase_index(xa, 0x3ffd); xa 795 lib/test_xarray.c xa_erase_index(xa, 1); xa 796 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 803 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc_cyclic(xa, &id, entry, limit, xa 805 lib/test_xarray.c XA_BUG_ON(xa, xa_mk_index(id) != entry); xa 810 lib/test_xarray.c xa_erase_index(xa, base); xa 811 lib/test_xarray.c xa_erase_index(xa, base + 1); xa 813 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc_cyclic(xa, &id, xa_mk_index(UINT_MAX), xa 815 lib/test_xarray.c XA_BUG_ON(xa, id != UINT_MAX); xa 816 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc_cyclic(xa, &id, xa_mk_index(base), xa 818 lib/test_xarray.c XA_BUG_ON(xa, id != base); xa 819 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc_cyclic(xa, &id, xa_mk_index(base + 1), xa 821 lib/test_xarray.c XA_BUG_ON(xa, id != base + 1); xa 823 lib/test_xarray.c xa_for_each(xa, index, entry) xa 824 lib/test_xarray.c xa_erase_index(xa, index); xa 826 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 842 lib/test_xarray.c static noinline void __check_store_iter(struct xarray *xa, unsigned long start, xa 845 lib/test_xarray.c XA_STATE_ORDER(xas, xa, start, order); xa 852 lib/test_xarray.c XA_BUG_ON(xa, !xa_is_value(entry)); xa 853 lib/test_xarray.c XA_BUG_ON(xa, entry < xa_mk_index(start)); xa 854 lib/test_xarray.c XA_BUG_ON(xa, entry > xa_mk_index(start + (1UL << order) - 1)); xa 863 lib/test_xarray.c XA_BUG_ON(xa, xas_error(&xas)); xa 864 lib/test_xarray.c XA_BUG_ON(xa, count != present); xa 865 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, start) != xa_mk_index(start)); xa 866 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, start + (1UL << order) - 1) != xa 868 lib/test_xarray.c xa_erase_index(xa, start); xa 871 lib/test_xarray.c static noinline void check_store_iter(struct xarray *xa) xa 879 lib/test_xarray.c __check_store_iter(xa, 0, i, 0); xa 880 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 881 lib/test_xarray.c __check_store_iter(xa, min, i, 0); xa 882 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 884 lib/test_xarray.c xa_store_index(xa, min, GFP_KERNEL); xa 885 lib/test_xarray.c __check_store_iter(xa, min, i, 1); xa 886 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 887 lib/test_xarray.c xa_store_index(xa, max, GFP_KERNEL); xa 888 lib/test_xarray.c __check_store_iter(xa, min, i, 1); xa 889 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 892 lib/test_xarray.c xa_store_index(xa, j, GFP_KERNEL); xa 893 lib/test_xarray.c __check_store_iter(xa, 0, i, min); xa 894 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 896 lib/test_xarray.c xa_store_index(xa, min + j, GFP_KERNEL); xa 897 lib/test_xarray.c __check_store_iter(xa, min, i, min); xa 898 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 901 lib/test_xarray.c xa_store_index(xa, 63, GFP_KERNEL); xa 902 lib/test_xarray.c xa_store_index(xa, 65, GFP_KERNEL); xa 903 lib/test_xarray.c __check_store_iter(xa, 64, 2, 1); xa 904 lib/test_xarray.c xa_erase_index(xa, 63); xa 906 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 909 lib/test_xarray.c static noinline void check_multi_find_1(struct xarray *xa, unsigned order) xa 916 lib/test_xarray.c xa_store_order(xa, multi, order, xa_mk_value(multi), GFP_KERNEL); xa 917 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, next, GFP_KERNEL) != NULL); xa 918 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, next + 1, GFP_KERNEL) != NULL); xa 921 lib/test_xarray.c XA_BUG_ON(xa, xa_find(xa, &index, ULONG_MAX, XA_PRESENT) != xa 923 lib/test_xarray.c XA_BUG_ON(xa, index != multi); xa 925 lib/test_xarray.c XA_BUG_ON(xa, xa_find(xa, &index, ULONG_MAX, XA_PRESENT) != xa 927 lib/test_xarray.c XA_BUG_ON(xa, (index < multi) || (index >= next)); xa 928 lib/test_xarray.c XA_BUG_ON(xa, xa_find_after(xa, &index, ULONG_MAX, XA_PRESENT) != xa 930 lib/test_xarray.c XA_BUG_ON(xa, index != next); xa 931 lib/test_xarray.c XA_BUG_ON(xa, xa_find_after(xa, &index, next, XA_PRESENT) != NULL); xa 932 lib/test_xarray.c XA_BUG_ON(xa, index != next); xa 934 lib/test_xarray.c xa_erase_index(xa, multi); xa 935 lib/test_xarray.c xa_erase_index(xa, next); xa 936 lib/test_xarray.c xa_erase_index(xa, next + 1); xa 937 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 941 lib/test_xarray.c static noinline void check_multi_find_2(struct xarray *xa) xa 950 lib/test_xarray.c XA_STATE(xas, xa, j + index); xa 951 lib/test_xarray.c xa_store_index(xa, index - 1, GFP_KERNEL); xa 952 lib/test_xarray.c xa_store_order(xa, index, i, xa_mk_index(index), xa 956 lib/test_xarray.c xa_erase_index(xa, index); xa 959 lib/test_xarray.c xa_erase_index(xa, index - 1); xa 960 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 965 lib/test_xarray.c static noinline void check_multi_find_3(struct xarray *xa) xa 972 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 973 lib/test_xarray.c xa_store_order(xa, 0, order - 4, xa_mk_index(0), GFP_KERNEL); xa 974 lib/test_xarray.c XA_BUG_ON(xa, xa_find_after(xa, &index, ULONG_MAX, XA_PRESENT)); xa 975 lib/test_xarray.c xa_erase_index(xa, 0); xa 979 lib/test_xarray.c static noinline void check_find_1(struct xarray *xa) xa 983 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 990 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, i, GFP_KERNEL) != NULL); xa 991 lib/test_xarray.c xa_set_mark(xa, i, XA_MARK_0); xa 993 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, j, GFP_KERNEL) != xa 995 lib/test_xarray.c xa_set_mark(xa, j, XA_MARK_0); xa 998 lib/test_xarray.c void *entry = xa_find(xa, &index, ULONG_MAX, xa 1001 lib/test_xarray.c XA_BUG_ON(xa, index != j); xa 1003 lib/test_xarray.c XA_BUG_ON(xa, index != i); xa 1005 lib/test_xarray.c XA_BUG_ON(xa, entry != NULL); xa 1008 lib/test_xarray.c entry = xa_find(xa, &index, ULONG_MAX, xa 1011 lib/test_xarray.c XA_BUG_ON(xa, index != j); xa 1013 lib/test_xarray.c XA_BUG_ON(xa, index != i); xa 1015 lib/test_xarray.c XA_BUG_ON(xa, entry != NULL); xa 1017 lib/test_xarray.c xa_erase_index(xa, j); xa 1018 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, j, XA_MARK_0)); xa 1019 lib/test_xarray.c XA_BUG_ON(xa, !xa_get_mark(xa, i, XA_MARK_0)); xa 1021 lib/test_xarray.c xa_erase_index(xa, i); xa 1022 lib/test_xarray.c XA_BUG_ON(xa, xa_get_mark(xa, i, XA_MARK_0)); xa 1024 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1027 lib/test_xarray.c static noinline void check_find_2(struct xarray *xa) xa 1032 lib/test_xarray.c xa_for_each(xa, index, entry) { xa 1033 lib/test_xarray.c XA_BUG_ON(xa, true); xa 1037 lib/test_xarray.c xa_store_index(xa, index, GFP_KERNEL); xa 1039 lib/test_xarray.c xa_for_each(xa, index, entry) { xa 1040 lib/test_xarray.c XA_BUG_ON(xa, xa_mk_index(index) != entry); xa 1041 lib/test_xarray.c XA_BUG_ON(xa, index != j++); xa 1045 lib/test_xarray.c xa_destroy(xa); xa 1048 lib/test_xarray.c static noinline void check_find_3(struct xarray *xa) xa 1050 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 1062 lib/test_xarray.c XA_BUG_ON(xa, xa 1067 lib/test_xarray.c xa_store_index(xa, i, GFP_KERNEL); xa 1068 lib/test_xarray.c xa_set_mark(xa, i, XA_MARK_0); xa 1070 lib/test_xarray.c xa_destroy(xa); xa 1073 lib/test_xarray.c static noinline void check_find_4(struct xarray *xa) xa 1078 lib/test_xarray.c xa_store_index(xa, ULONG_MAX, GFP_KERNEL); xa 1080 lib/test_xarray.c entry = xa_find_after(xa, &index, ULONG_MAX, XA_PRESENT); xa 1081 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(ULONG_MAX)); xa 1083 lib/test_xarray.c entry = xa_find_after(xa, &index, ULONG_MAX, XA_PRESENT); xa 1084 lib/test_xarray.c XA_BUG_ON(xa, entry); xa 1086 lib/test_xarray.c xa_erase_index(xa, ULONG_MAX); xa 1089 lib/test_xarray.c static noinline void check_find(struct xarray *xa) xa 1093 lib/test_xarray.c check_find_1(xa); xa 1094 lib/test_xarray.c check_find_2(xa); xa 1095 lib/test_xarray.c check_find_3(xa); xa 1096 lib/test_xarray.c check_find_4(xa); xa 1099 lib/test_xarray.c check_multi_find_1(xa, i); xa 1100 lib/test_xarray.c check_multi_find_2(xa); xa 1101 lib/test_xarray.c check_multi_find_3(xa); xa 1105 lib/test_xarray.c static noinline unsigned long xa_find_entry(struct xarray *xa, void *item) xa 1107 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 1127 lib/test_xarray.c static noinline void check_find_entry(struct xarray *xa) xa 1138 lib/test_xarray.c xa_store_order(xa, index, order, xa 1140 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, index) != xa 1142 lib/test_xarray.c XA_BUG_ON(xa, xa_find_entry(xa, xa 1145 lib/test_xarray.c XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); xa 1146 lib/test_xarray.c xa_destroy(xa); xa 1151 lib/test_xarray.c XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); xa 1152 lib/test_xarray.c xa_store_index(xa, ULONG_MAX, GFP_KERNEL); xa 1153 lib/test_xarray.c XA_BUG_ON(xa, xa_find_entry(xa, xa) != -1); xa 1154 lib/test_xarray.c XA_BUG_ON(xa, xa_find_entry(xa, xa_mk_index(ULONG_MAX)) != -1); xa 1155 lib/test_xarray.c xa_erase_index(xa, ULONG_MAX); xa 1156 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1159 lib/test_xarray.c static noinline void check_pause(struct xarray *xa) xa 1161 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 1168 lib/test_xarray.c XA_BUG_ON(xa, xa_store_order(xa, index, order, xa 1175 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(1UL << count)); xa 1179 lib/test_xarray.c XA_BUG_ON(xa, count != order_limit); xa 1185 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(1UL << count)); xa 1190 lib/test_xarray.c XA_BUG_ON(xa, count != order_limit); xa 1192 lib/test_xarray.c xa_destroy(xa); xa 1195 lib/test_xarray.c static noinline void check_move_tiny(struct xarray *xa) xa 1197 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 1199 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1201 lib/test_xarray.c XA_BUG_ON(xa, xas_next(&xas) != NULL); xa 1202 lib/test_xarray.c XA_BUG_ON(xa, xas_next(&xas) != NULL); xa 1204 lib/test_xarray.c xa_store_index(xa, 0, GFP_KERNEL); xa 1207 lib/test_xarray.c XA_BUG_ON(xa, xas_next(&xas) != xa_mk_index(0)); xa 1208 lib/test_xarray.c XA_BUG_ON(xa, xas_next(&xas) != NULL); xa 1210 lib/test_xarray.c XA_BUG_ON(xa, xas_prev(&xas) != xa_mk_index(0)); xa 1211 lib/test_xarray.c XA_BUG_ON(xa, xas_prev(&xas) != NULL); xa 1213 lib/test_xarray.c xa_erase_index(xa, 0); xa 1214 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1217 lib/test_xarray.c static noinline void check_move_max(struct xarray *xa) xa 1219 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 1221 lib/test_xarray.c xa_store_index(xa, ULONG_MAX, GFP_KERNEL); xa 1223 lib/test_xarray.c XA_BUG_ON(xa, xas_find(&xas, ULONG_MAX) != xa_mk_index(ULONG_MAX)); xa 1224 lib/test_xarray.c XA_BUG_ON(xa, xas_find(&xas, ULONG_MAX) != NULL); xa 1229 lib/test_xarray.c XA_BUG_ON(xa, xas_find(&xas, ULONG_MAX) != xa_mk_index(ULONG_MAX)); xa 1231 lib/test_xarray.c XA_BUG_ON(xa, xas_find(&xas, ULONG_MAX) != NULL); xa 1234 lib/test_xarray.c xa_erase_index(xa, ULONG_MAX); xa 1235 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1238 lib/test_xarray.c static noinline void check_move_small(struct xarray *xa, unsigned long idx) xa 1240 lib/test_xarray.c XA_STATE(xas, xa, 0); xa 1243 lib/test_xarray.c xa_store_index(xa, 0, GFP_KERNEL); xa 1244 lib/test_xarray.c xa_store_index(xa, idx, GFP_KERNEL); xa 1250 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node == XAS_RESTART); xa 1251 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != i); xa 1253 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(i)); xa 1255 lib/test_xarray.c XA_BUG_ON(xa, entry != NULL); xa 1258 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != i); xa 1264 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node == XAS_RESTART); xa 1265 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != i); xa 1267 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(i)); xa 1269 lib/test_xarray.c XA_BUG_ON(xa, entry != NULL); xa 1273 lib/test_xarray.c XA_BUG_ON(xa, xas_next(&xas) != NULL); xa 1274 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != ULONG_MAX); xa 1275 lib/test_xarray.c XA_BUG_ON(xa, xas_next(&xas) != xa_mk_value(0)); xa 1276 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != 0); xa 1277 lib/test_xarray.c XA_BUG_ON(xa, xas_prev(&xas) != NULL); xa 1278 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != ULONG_MAX); xa 1281 lib/test_xarray.c xa_erase_index(xa, 0); xa 1282 lib/test_xarray.c xa_erase_index(xa, idx); xa 1283 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1286 lib/test_xarray.c static noinline void check_move(struct xarray *xa) xa 1288 lib/test_xarray.c XA_STATE(xas, xa, (1 << 16) - 1); xa 1292 lib/test_xarray.c XA_BUG_ON(xa, xa_store_index(xa, i, GFP_KERNEL) != NULL); xa 1298 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(i)); xa 1299 lib/test_xarray.c XA_BUG_ON(xa, i != xas.xa_index); xa 1302 lib/test_xarray.c XA_BUG_ON(xa, xas_prev(&xas) != NULL); xa 1303 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != ULONG_MAX); xa 1307 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(i)); xa 1308 lib/test_xarray.c XA_BUG_ON(xa, i != xas.xa_index); xa 1314 lib/test_xarray.c xa_erase_index(xa, i); xa 1323 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(i)); xa 1325 lib/test_xarray.c XA_BUG_ON(xa, entry != NULL); xa 1326 lib/test_xarray.c XA_BUG_ON(xa, i != xas.xa_index); xa 1329 lib/test_xarray.c XA_BUG_ON(xa, xas_prev(&xas) != NULL); xa 1330 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_index != ULONG_MAX); xa 1335 lib/test_xarray.c XA_BUG_ON(xa, entry != xa_mk_index(i)); xa 1337 lib/test_xarray.c XA_BUG_ON(xa, entry != NULL); xa 1338 lib/test_xarray.c XA_BUG_ON(xa, i != xas.xa_index); xa 1343 lib/test_xarray.c xa_destroy(xa); xa 1345 lib/test_xarray.c check_move_tiny(xa); xa 1346 lib/test_xarray.c check_move_max(xa); xa 1349 lib/test_xarray.c check_move_small(xa, 1UL << i); xa 1352 lib/test_xarray.c check_move_small(xa, (1UL << i) - 1); xa 1355 lib/test_xarray.c static noinline void xa_store_many_order(struct xarray *xa, xa 1358 lib/test_xarray.c XA_STATE_ORDER(xas, xa, index, order); xa 1363 lib/test_xarray.c XA_BUG_ON(xa, xas_find_conflict(&xas)); xa 1368 lib/test_xarray.c XA_BUG_ON(xa, xas_store(&xas, xa_mk_index(index + i))); xa 1375 lib/test_xarray.c XA_BUG_ON(xa, xas_error(&xas)); xa 1378 lib/test_xarray.c static noinline void check_create_range_1(struct xarray *xa, xa 1383 lib/test_xarray.c xa_store_many_order(xa, index, order); xa 1385 lib/test_xarray.c xa_erase_index(xa, i); xa 1386 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1389 lib/test_xarray.c static noinline void check_create_range_2(struct xarray *xa, unsigned order) xa 1395 lib/test_xarray.c xa_store_many_order(xa, i, order); xa 1397 lib/test_xarray.c xa_erase_index(xa, i); xa 1398 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1409 lib/test_xarray.c static noinline void check_create_range_4(struct xarray *xa, xa 1412 lib/test_xarray.c XA_STATE_ORDER(xas, xa, index, order); xa 1416 lib/test_xarray.c xa_store_index(xa, index, GFP_KERNEL); xa 1425 lib/test_xarray.c XA_BUG_ON(xa, old != xa_mk_index(base + i)); xa 1427 lib/test_xarray.c XA_BUG_ON(xa, old != NULL); xa 1434 lib/test_xarray.c XA_BUG_ON(xa, xas_error(&xas)); xa 1437 lib/test_xarray.c xa_erase_index(xa, i); xa 1438 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1441 lib/test_xarray.c static noinline void check_create_range(struct xarray *xa) xa 1447 lib/test_xarray.c check_create_range_1(xa, 0, order); xa 1448 lib/test_xarray.c check_create_range_1(xa, 1U << order, order); xa 1449 lib/test_xarray.c check_create_range_1(xa, 2U << order, order); xa 1450 lib/test_xarray.c check_create_range_1(xa, 3U << order, order); xa 1451 lib/test_xarray.c check_create_range_1(xa, 1U << 24, order); xa 1453 lib/test_xarray.c check_create_range_2(xa, order); xa 1455 lib/test_xarray.c check_create_range_4(xa, 0, order); xa 1456 lib/test_xarray.c check_create_range_4(xa, 1U << order, order); xa 1457 lib/test_xarray.c check_create_range_4(xa, 2U << order, order); xa 1458 lib/test_xarray.c check_create_range_4(xa, 3U << order, order); xa 1459 lib/test_xarray.c check_create_range_4(xa, 1U << 24, order); xa 1461 lib/test_xarray.c check_create_range_4(xa, 1, order); xa 1462 lib/test_xarray.c check_create_range_4(xa, (1U << order) + 1, order); xa 1463 lib/test_xarray.c check_create_range_4(xa, (2U << order) + 1, order); xa 1464 lib/test_xarray.c check_create_range_4(xa, (2U << order) - 1, order); xa 1465 lib/test_xarray.c check_create_range_4(xa, (3U << order) + 1, order); xa 1466 lib/test_xarray.c check_create_range_4(xa, (3U << order) - 1, order); xa 1467 lib/test_xarray.c check_create_range_4(xa, (1U << 24) + 1, order); xa 1473 lib/test_xarray.c static noinline void __check_store_range(struct xarray *xa, unsigned long first, xa 1477 lib/test_xarray.c xa_store_range(xa, first, last, xa_mk_index(first), GFP_KERNEL); xa 1479 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, first) != xa_mk_index(first)); xa 1480 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, last) != xa_mk_index(first)); xa 1481 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, first - 1) != NULL); xa 1482 lib/test_xarray.c XA_BUG_ON(xa, xa_load(xa, last + 1) != NULL); xa 1484 lib/test_xarray.c xa_store_range(xa, first, last, NULL, GFP_KERNEL); xa 1487 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1490 lib/test_xarray.c static noinline void check_store_range(struct xarray *xa) xa 1496 lib/test_xarray.c __check_store_range(xa, i, j); xa 1497 lib/test_xarray.c __check_store_range(xa, 128 + i, 128 + j); xa 1498 lib/test_xarray.c __check_store_range(xa, 4095 + i, 4095 + j); xa 1499 lib/test_xarray.c __check_store_range(xa, 4096 + i, 4096 + j); xa 1500 lib/test_xarray.c __check_store_range(xa, 123456 + i, 123456 + j); xa 1501 lib/test_xarray.c __check_store_range(xa, (1 << 24) + i, (1 << 24) + j); xa 1506 lib/test_xarray.c static void check_align_1(struct xarray *xa, char *name) xa 1514 lib/test_xarray.c XA_BUG_ON(xa, xa_alloc(xa, &id, name + i, xa_limit_32b, xa 1516 lib/test_xarray.c XA_BUG_ON(xa, id != i); xa 1518 lib/test_xarray.c xa_for_each(xa, index, entry) xa 1519 lib/test_xarray.c XA_BUG_ON(xa, xa_is_err(entry)); xa 1520 lib/test_xarray.c xa_destroy(xa); xa 1527 lib/test_xarray.c static void check_align_2(struct xarray *xa, char *name) xa 1531 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1534 lib/test_xarray.c XA_BUG_ON(xa, xa_store(xa, 0, name + i, GFP_KERNEL) != NULL); xa 1535 lib/test_xarray.c xa_erase(xa, 0); xa 1539 lib/test_xarray.c XA_BUG_ON(xa, xa_reserve(xa, 0, GFP_KERNEL) != 0); xa 1540 lib/test_xarray.c XA_BUG_ON(xa, xa_store(xa, 0, name + i, 0) != NULL); xa 1541 lib/test_xarray.c xa_erase(xa, 0); xa 1544 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1547 lib/test_xarray.c static noinline void check_align(struct xarray *xa) xa 1551 lib/test_xarray.c check_align_1(xa, name); xa 1552 lib/test_xarray.c check_align_1(xa, name + 1); xa 1553 lib/test_xarray.c check_align_1(xa, name + 2); xa 1554 lib/test_xarray.c check_align_1(xa, name + 3); xa 1555 lib/test_xarray.c check_align_2(xa, name); xa 1571 lib/test_xarray.c static noinline void shadow_remove(struct xarray *xa) xa 1575 lib/test_xarray.c xa_lock(xa); xa 1579 lib/test_xarray.c XA_BUG_ON(xa, node->array != xa); xa 1587 lib/test_xarray.c xa_unlock(xa); xa 1590 lib/test_xarray.c static noinline void check_workingset(struct xarray *xa, unsigned long index) xa 1592 lib/test_xarray.c XA_STATE(xas, xa, index); xa 1603 lib/test_xarray.c XA_BUG_ON(xa, list_empty(&shadow_nodes)); xa 1608 lib/test_xarray.c XA_BUG_ON(xa, !list_empty(&shadow_nodes)); xa 1612 lib/test_xarray.c XA_BUG_ON(xa, list_empty(&shadow_nodes)); xa 1614 lib/test_xarray.c shadow_remove(xa); xa 1615 lib/test_xarray.c XA_BUG_ON(xa, !list_empty(&shadow_nodes)); xa 1616 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1623 lib/test_xarray.c static noinline void check_account(struct xarray *xa) xa 1629 lib/test_xarray.c XA_STATE(xas, xa, 1 << order); xa 1631 lib/test_xarray.c xa_store_order(xa, 0, order, xa, GFP_KERNEL); xa 1634 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node->count == 0); xa 1635 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node->count > (1 << order)); xa 1636 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node->nr_values != 0); xa 1639 lib/test_xarray.c xa_store_order(xa, 1 << order, order, xa_mk_index(1UL << order), xa 1641 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node->count != xas.xa_node->nr_values * 2); xa 1643 lib/test_xarray.c xa_erase(xa, 1 << order); xa 1644 lib/test_xarray.c XA_BUG_ON(xa, xas.xa_node->nr_values != 0); xa 1646 lib/test_xarray.c xa_erase(xa, 0); xa 1647 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1652 lib/test_xarray.c static noinline void check_destroy(struct xarray *xa) xa 1656 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1659 lib/test_xarray.c xa_destroy(xa); xa 1660 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1664 lib/test_xarray.c xa_store_index(xa, index, GFP_KERNEL); xa 1665 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 1666 lib/test_xarray.c xa_destroy(xa); xa 1667 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1671 lib/test_xarray.c xa_store(xa, ULONG_MAX, xa, GFP_KERNEL); xa 1672 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 1673 lib/test_xarray.c xa_destroy(xa); xa 1674 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 1678 lib/test_xarray.c xa_store_order(xa, 1 << 11, 11, xa, GFP_KERNEL); xa 1679 lib/test_xarray.c XA_BUG_ON(xa, xa_empty(xa)); xa 1680 lib/test_xarray.c xa_destroy(xa); xa 1681 lib/test_xarray.c XA_BUG_ON(xa, !xa_empty(xa)); xa 31 lib/xarray.c static inline unsigned int xa_lock_type(const struct xarray *xa) xa 33 lib/xarray.c return (__force unsigned int)xa->xa_flags & 3; xa 56 lib/xarray.c static inline bool xa_track_free(const struct xarray *xa) xa 58 lib/xarray.c return xa->xa_flags & XA_FLAGS_TRACK_FREE; xa 61 lib/xarray.c static inline bool xa_zero_busy(const struct xarray *xa) xa 63 lib/xarray.c return xa->xa_flags & XA_FLAGS_ZERO_BUSY; xa 66 lib/xarray.c static inline void xa_mark_set(struct xarray *xa, xa_mark_t mark) xa 68 lib/xarray.c if (!(xa->xa_flags & XA_FLAGS_MARK(mark))) xa 69 lib/xarray.c xa->xa_flags |= XA_FLAGS_MARK(mark); xa 72 lib/xarray.c static inline void xa_mark_clear(struct xarray *xa, xa_mark_t mark) xa 74 lib/xarray.c if (xa->xa_flags & XA_FLAGS_MARK(mark)) xa 75 lib/xarray.c xa->xa_flags &= ~(XA_FLAGS_MARK(mark)); xa 188 lib/xarray.c entry = xa_head(xas->xa); xa 204 lib/xarray.c void *entry = xa_entry(xas->xa, node, offset); xa 209 lib/xarray.c entry = xa_entry(xas->xa, node, offset); xa 302 lib/xarray.c if (xas->xa->xa_flags & XA_FLAGS_ACCOUNT) xa 323 lib/xarray.c __must_hold(xas->xa->xa_lock) xa 325 lib/xarray.c unsigned int lock_type = xa_lock_type(xas->xa); xa 331 lib/xarray.c if (xas->xa->xa_flags & XA_FLAGS_ACCOUNT) xa 368 lib/xarray.c if (xas->xa->xa_flags & XA_FLAGS_ACCOUNT) xa 390 lib/xarray.c node->array = xas->xa; xa 435 lib/xarray.c struct xarray *xa = xas->xa; xa 444 lib/xarray.c entry = xa_entry_locked(xa, node, 0); xa 449 lib/xarray.c if (xa_is_zero(entry) && xa_zero_busy(xa)) xa 453 lib/xarray.c RCU_INIT_POINTER(xa->xa_head, entry); xa 454 lib/xarray.c if (xa_track_free(xa) && !node_get_mark(node, 0, XA_FREE_MARK)) xa 455 lib/xarray.c xa_mark_clear(xa, XA_FREE_MARK); xa 488 lib/xarray.c parent = xa_parent_locked(xas->xa, node); xa 494 lib/xarray.c xas->xa->xa_head = NULL; xa 525 lib/xarray.c void *entry = xa_entry_locked(xas->xa, node, offset); xa 538 lib/xarray.c parent = xa_parent_locked(xas->xa, node); xa 557 lib/xarray.c struct xarray *xa = xas->xa; xa 589 lib/xarray.c if (xa_track_free(xa) && mark == XA_FREE_MARK) { xa 591 lib/xarray.c if (!xa_marked(xa, XA_FREE_MARK)) { xa 593 lib/xarray.c xa_mark_set(xa, XA_FREE_MARK); xa 595 lib/xarray.c } else if (xa_marked(xa, mark)) { xa 612 lib/xarray.c rcu_assign_pointer(xa->xa_head, head); xa 637 lib/xarray.c struct xarray *xa = xas->xa; xa 645 lib/xarray.c entry = xa_head_locked(xa); xa 647 lib/xarray.c if (!entry && xa_zero_busy(xa)) xa 654 lib/xarray.c entry = xa_head_locked(xa); xa 655 lib/xarray.c slot = &xa->xa_head; xa 662 lib/xarray.c entry = xa_entry_locked(xa, node, offset); xa 666 lib/xarray.c entry = xa_head_locked(xa); xa 667 lib/xarray.c slot = &xa->xa_head; xa 676 lib/xarray.c if (xa_track_free(xa)) xa 722 lib/xarray.c xas->xa_node = xa_parent_locked(xas->xa, node); xa 772 lib/xarray.c void __rcu **slot = &xas->xa->xa_head; xa 829 lib/xarray.c next = xa_entry_locked(xas->xa, node, ++offset); xa 856 lib/xarray.c return xa_marked(xas->xa, mark); xa 882 lib/xarray.c node = xa_parent_locked(xas->xa, node); xa 885 lib/xarray.c if (!xa_marked(xas->xa, mark)) xa 886 lib/xarray.c xa_mark_set(xas->xa, mark); xa 914 lib/xarray.c node = xa_parent_locked(xas->xa, node); xa 917 lib/xarray.c if (xa_marked(xas->xa, mark)) xa 918 lib/xarray.c xa_mark_clear(xas->xa, mark); xa 938 lib/xarray.c if (xa_track_free(xas->xa) && mark == XA_FREE_MARK) xa 975 lib/xarray.c if (!xa_is_sibling(xa_entry(xas->xa, node, offset))) xa 1010 lib/xarray.c xas->xa_node = xa_parent(xas->xa, xas->xa_node); xa 1016 lib/xarray.c entry = xa_entry(xas->xa, xas->xa_node, xas->xa_offset); xa 1049 lib/xarray.c xas->xa_node = xa_parent(xas->xa, xas->xa_node); xa 1055 lib/xarray.c entry = xa_entry(xas->xa, xas->xa_node, xas->xa_offset); xa 1107 lib/xarray.c xas->xa_node = xa_parent(xas->xa, xas->xa_node); xa 1111 lib/xarray.c entry = xa_entry(xas->xa, xas->xa_node, xas->xa_offset); xa 1166 lib/xarray.c entry = xa_head(xas->xa); xa 1171 lib/xarray.c if (xa_marked(xas->xa, mark)) xa 1183 lib/xarray.c xas->xa_node = xa_parent(xas->xa, xas->xa_node); xa 1191 lib/xarray.c entry = xa_entry(xas->xa, xas->xa_node, xas->xa_offset); xa 1210 lib/xarray.c entry = xa_entry(xas->xa, xas->xa_node, xas->xa_offset); xa 1211 lib/xarray.c if (!entry && !(xa_track_free(xas->xa) && mark == XA_FREE_MARK)) xa 1269 lib/xarray.c xas->xa_node = xa_parent_locked(xas->xa, xas->xa_node); xa 1274 lib/xarray.c curr = xa_entry_locked(xas->xa, xas->xa_node, ++xas->xa_offset); xa 1280 lib/xarray.c curr = xa_entry_locked(xas->xa, xas->xa_node, 0); xa 1298 lib/xarray.c void *xa_load(struct xarray *xa, unsigned long index) xa 1300 lib/xarray.c XA_STATE(xas, xa, index); xa 1336 lib/xarray.c void *__xa_erase(struct xarray *xa, unsigned long index) xa 1338 lib/xarray.c XA_STATE(xas, xa, index); xa 1355 lib/xarray.c void *xa_erase(struct xarray *xa, unsigned long index) xa 1359 lib/xarray.c xa_lock(xa); xa 1360 lib/xarray.c entry = __xa_erase(xa, index); xa 1361 lib/xarray.c xa_unlock(xa); xa 1382 lib/xarray.c void *__xa_store(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) xa 1384 lib/xarray.c XA_STATE(xas, xa, index); xa 1389 lib/xarray.c if (xa_track_free(xa) && !entry) xa 1394 lib/xarray.c if (xa_track_free(xa)) xa 1419 lib/xarray.c void *xa_store(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) xa 1423 lib/xarray.c xa_lock(xa); xa 1424 lib/xarray.c curr = __xa_store(xa, index, entry, gfp); xa 1425 lib/xarray.c xa_unlock(xa); xa 1447 lib/xarray.c void *__xa_cmpxchg(struct xarray *xa, unsigned long index, xa 1450 lib/xarray.c XA_STATE(xas, xa, index); xa 1460 lib/xarray.c if (xa_track_free(xa) && entry && !curr) xa 1485 lib/xarray.c int __xa_insert(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) xa 1487 lib/xarray.c XA_STATE(xas, xa, index); xa 1499 lib/xarray.c if (xa_track_free(xa)) xa 1560 lib/xarray.c void *xa_store_range(struct xarray *xa, unsigned long first, xa 1563 lib/xarray.c XA_STATE(xas, xa, 0); xa 1614 lib/xarray.c int __xa_alloc(struct xarray *xa, u32 *id, void *entry, xa 1617 lib/xarray.c XA_STATE(xas, xa, 0); xa 1621 lib/xarray.c if (WARN_ON_ONCE(!xa_track_free(xa))) xa 1663 lib/xarray.c int __xa_alloc_cyclic(struct xarray *xa, u32 *id, void *entry, xa 1670 lib/xarray.c ret = __xa_alloc(xa, id, entry, limit, gfp); xa 1671 lib/xarray.c if ((xa->xa_flags & XA_FLAGS_ALLOC_WRAPPED) && ret == 0) { xa 1672 lib/xarray.c xa->xa_flags &= ~XA_FLAGS_ALLOC_WRAPPED; xa 1678 lib/xarray.c ret = __xa_alloc(xa, id, entry, limit, gfp); xa 1686 lib/xarray.c xa->xa_flags |= XA_FLAGS_ALLOC_WRAPPED; xa 1702 lib/xarray.c void __xa_set_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) xa 1704 lib/xarray.c XA_STATE(xas, xa, index); xa 1720 lib/xarray.c void __xa_clear_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) xa 1722 lib/xarray.c XA_STATE(xas, xa, index); xa 1742 lib/xarray.c bool xa_get_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) xa 1744 lib/xarray.c XA_STATE(xas, xa, index); xa 1772 lib/xarray.c void xa_set_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) xa 1774 lib/xarray.c xa_lock(xa); xa 1775 lib/xarray.c __xa_set_mark(xa, index, mark); xa 1776 lib/xarray.c xa_unlock(xa); xa 1790 lib/xarray.c void xa_clear_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) xa 1792 lib/xarray.c xa_lock(xa); xa 1793 lib/xarray.c __xa_clear_mark(xa, index, mark); xa 1794 lib/xarray.c xa_unlock(xa); xa 1815 lib/xarray.c void *xa_find(struct xarray *xa, unsigned long *indexp, xa 1818 lib/xarray.c XA_STATE(xas, xa, *indexp); xa 1865 lib/xarray.c void *xa_find_after(struct xarray *xa, unsigned long *indexp, xa 1868 lib/xarray.c XA_STATE(xas, xa, *indexp + 1); xa 1962 lib/xarray.c unsigned int xa_extract(struct xarray *xa, void **dst, unsigned long start, xa 1965 lib/xarray.c XA_STATE(xas, xa, start); xa 1986 lib/xarray.c void xa_destroy(struct xarray *xa) xa 1988 lib/xarray.c XA_STATE(xas, xa, 0); xa 1994 lib/xarray.c entry = xa_head_locked(xa); xa 1995 lib/xarray.c RCU_INIT_POINTER(xa->xa_head, NULL); xa 1997 lib/xarray.c if (xa_zero_busy(xa)) xa 1998 lib/xarray.c xa_mark_clear(xa, XA_FREE_MARK); xa 2072 lib/xarray.c void xa_dump(const struct xarray *xa) xa 2074 lib/xarray.c void *entry = xa->xa_head; xa 2077 lib/xarray.c pr_info("xarray: %px head %px flags %x marks %d %d %d\n", xa, entry, xa 2078 lib/xarray.c xa->xa_flags, xa_marked(xa, XA_MARK_0), xa 2079 lib/xarray.c xa_marked(xa, XA_MARK_1), xa_marked(xa, XA_MARK_2)); xa 49 net/core/xdp.c const struct xdp_mem_allocator *xa = ptr; xa 52 net/core/xdp.c return xa->mem.id != mem_id; xa 69 net/core/xdp.c struct xdp_mem_allocator *xa; xa 71 net/core/xdp.c xa = container_of(rcu, struct xdp_mem_allocator, rcu); xa 74 net/core/xdp.c ida_simple_remove(&mem_id_pool, xa->mem.id); xa 77 net/core/xdp.c xa->mem.id = 0xFFFF; xa 78 net/core/xdp.c xa->mem.type = 0xF0F0; xa 79 net/core/xdp.c xa->allocator = (void *)0xDEAD9001; xa 81 net/core/xdp.c kfree(xa); xa 84 net/core/xdp.c static void mem_xa_remove(struct xdp_mem_allocator *xa) xa 86 net/core/xdp.c trace_mem_disconnect(xa); xa 88 net/core/xdp.c if (!rhashtable_remove_fast(mem_id_ht, &xa->node, mem_id_rht_params)) xa 89 net/core/xdp.c call_rcu(&xa->rcu, __xdp_mem_allocator_rcu_free); xa 94 net/core/xdp.c struct xdp_mem_allocator *xa; xa 103 net/core/xdp.c while ((xa = rhashtable_walk_next(&iter)) && !IS_ERR(xa)) { xa 104 net/core/xdp.c if (xa->allocator == allocator) xa 105 net/core/xdp.c mem_xa_remove(xa); xa 110 net/core/xdp.c } while (xa == ERR_PTR(-EAGAIN)); xa 118 net/core/xdp.c struct xdp_mem_allocator *xa; xa 122 net/core/xdp.c xa = rhashtable_lookup_fast(mem_id_ht, &id, mem_id_rht_params); xa 123 net/core/xdp.c if (!xa) { xa 129 net/core/xdp.c trace_mem_disconnect(xa); xa 131 net/core/xdp.c if (!rhashtable_remove_fast(mem_id_ht, &xa->node, mem_id_rht_params)) xa 132 net/core/xdp.c call_rcu(&xa->rcu, __xdp_mem_allocator_rcu_free); xa 139 net/core/xdp.c struct xdp_mem_allocator *xa; xa 155 net/core/xdp.c xa = rhashtable_lookup(mem_id_ht, &id, mem_id_rht_params); xa 156 net/core/xdp.c page_pool_destroy(xa->page_pool); xa 370 net/core/xdp.c struct xdp_mem_allocator *xa; xa 377 net/core/xdp.c xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params); xa 380 net/core/xdp.c page_pool_put_page(xa->page_pool, page, napi_direct); xa 394 net/core/xdp.c xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params); xa 395 net/core/xdp.c xa->zc_alloc->free(xa->zc_alloc, handle); xa 424 net/core/xdp.c struct xdp_mem_allocator *xa; xa 428 net/core/xdp.c xa = rhashtable_lookup(mem_id_ht, &mem->id, mem_id_rht_params); xa 430 net/core/xdp.c if (xa) xa 431 net/core/xdp.c page_pool_release_page(xa->page_pool, page); xa 21 tools/testing/radix-tree/iteration_check.c void my_item_insert(struct xarray *xa, unsigned long index) xa 23 tools/testing/radix-tree/iteration_check.c XA_STATE(xas, xa, index); xa 35 tools/testing/radix-tree/iteration_check_2.c struct xarray *xa = arg; xa 43 tools/testing/radix-tree/iteration_check_2.c xa_store(xa, i, xa_mk_value(i), GFP_KERNEL); xa 44 tools/testing/radix-tree/iteration_check_2.c xa_set_mark(xa, i, XA_MARK_0); xa 47 tools/testing/radix-tree/iteration_check_2.c xa_erase(xa, i); xa 15 tools/testing/radix-tree/multiorder.c static int item_insert_order(struct xarray *xa, unsigned long index, xa 18 tools/testing/radix-tree/multiorder.c XA_STATE_ORDER(xas, xa, index, order); xa 34 tools/testing/radix-tree/multiorder.c void multiorder_iteration(struct xarray *xa) xa 36 tools/testing/radix-tree/multiorder.c XA_STATE(xas, xa, 0); xa 47 tools/testing/radix-tree/multiorder.c err = item_insert_order(xa, index[i], order[i]); xa 71 tools/testing/radix-tree/multiorder.c item_kill_tree(xa); xa 74 tools/testing/radix-tree/multiorder.c void multiorder_tagged_iteration(struct xarray *xa) xa 76 tools/testing/radix-tree/multiorder.c XA_STATE(xas, xa, 0); xa 90 tools/testing/radix-tree/multiorder.c assert(!item_insert_order(xa, index[i], order[i])); xa 92 tools/testing/radix-tree/multiorder.c assert(!xa_marked(xa, XA_MARK_1)); xa 95 tools/testing/radix-tree/multiorder.c xa_set_mark(xa, tag_index[i], XA_MARK_1); xa 122 tools/testing/radix-tree/multiorder.c assert(tag_tagged_items(xa, 0, ULONG_MAX, TAG_ENTRIES, XA_MARK_1, xa 149 tools/testing/radix-tree/multiorder.c assert(tag_tagged_items(xa, 1, ULONG_MAX, MT_NUM_ENTRIES * 2, XA_MARK_1, xa 159 tools/testing/radix-tree/multiorder.c item_kill_tree(xa); xa 198 tools/testing/radix-tree/multiorder.c static void multiorder_iteration_race(struct xarray *xa) xa 204 tools/testing/radix-tree/multiorder.c pthread_create(&worker_thread[0], NULL, &creator_func, xa); xa 206 tools/testing/radix-tree/multiorder.c pthread_create(&worker_thread[i], NULL, &iterator_func, xa); xa 211 tools/testing/radix-tree/multiorder.c item_kill_tree(xa); xa 79 tools/testing/radix-tree/test.c int item_delete_rcu(struct xarray *xa, unsigned long index) xa 81 tools/testing/radix-tree/test.c struct item *item = xa_erase(xa, index); xa 173 tools/testing/radix-tree/test.c int tag_tagged_items(struct xarray *xa, unsigned long start, unsigned long end, xa 176 tools/testing/radix-tree/test.c XA_STATE(xas, xa, start); xa 255 tools/testing/radix-tree/test.c void item_kill_tree(struct xarray *xa) xa 257 tools/testing/radix-tree/test.c XA_STATE(xas, xa, 0); xa 267 tools/testing/radix-tree/test.c assert(xa_empty(xa)); xa 18 tools/testing/radix-tree/test.h int item_delete_rcu(struct xarray *xa, unsigned long index);