STRUCT XARRAY(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct xarray(9) β€” the manual page, but make it make sense

okay so bestie, welcome to struct xarray(9) from the Kernel API Manual ✨ this is the whole entire page about the little anchor guy that holds your XArray together. it's small, it's iconic, it's giving "quiet main character" 🌸


πŸŽ€ NAME πŸŽ€

struct xarray β€” literally the anchor of the XArray. that's it. that's the vibe. it holds the whole thing down πŸ’…


✨ SYNOPSIS ✨

struct xarray {
    spinlock_t xa_lock;
};

look at her. one member. absolutely no notes 🫢

🌸 Members 🌸

  • xa_lock β€” the lock that protects the contents of the XArray πŸ”’ she's the bodyguard, she keeps everything inside safe, no cap.

πŸ’– DESCRIPTION πŸ’–

okay so to actually use the xarray, you either define it statically or you embed it right inside your own data structure 🧚 that's the move.

and here's the thing β€” it is a very small data structure, so it does not usually make sense to allocate it separately and then keep a pointer to it in your data structure. like, why would you 😭 just embed her, she's tiny, she's low maintenance, she's the moment.

bonus: you may use the xa_lock to protect your own data structures as well πŸ‘‘ not me getting a two-for-one deal on locking, we love a multitasking queen ⭐


πŸ’€ SEE ALSO πŸ’€

Kernel file ./include/linux/xarray.h β€” plus the entire extended friend group, fr fr (iykyk):

xa_mk_value(9), xa_to_value(9), xa_is_value(9), xa_tag_pointer(9), xa_untag_pointer(9), xa_pointer_tag(9), xa_is_zero(9), xa_is_err(9), xa_err(9), struct xa_limit(9), DEFINE_XARRAY_FLAGS(9), DEFINE_XARRAY(9), DEFINE_XARRAY_ALLOC(9), DEFINE_XARRAY_ALLOC1(9), xa_init_flags(9), xa_init(9), xa_empty(9), xa_marked(9), xa_for_each_range(9), xa_for_each_start(9), xa_for_each(9), xa_for_each_marked(9), xa_store_bh(9), xa_store_irq(9), xa_erase_bh(9), xa_erase_irq(9), xa_cmpxchg(9), xa_cmpxchg_bh(9), xa_cmpxchg_irq(9), xa_insert(9), xa_insert_bh(9), xa_insert_irq(9), xa_alloc(9), xa_alloc_bh(9), xa_alloc_irq(9), xa_alloc_cyclic(9), xa_alloc_cyclic_bh(9), xa_alloc_cyclic_irq(9), xa_reserve(9), xa_reserve_bh(9), xa_reserve_irq(9), xa_release(9), xa_is_sibling(9), xa_is_retry(9), xa_is_advanced(9), xa_update_node_t(9), XA_STATE(9), XA_STATE_ORDER(9), xas_error(9), xas_set_err(9), xas_invalid(9), xas_valid(9), xas_is_node(9), xas_reset(9), xas_retry(9), xas_reload(9), xas_set(9), xas_advance(9), xas_set_order(9), xas_set_update(9), xas_next_entry(9), xas_next_marked(9), xas_for_each(9), xas_for_each_marked(9), xas_for_each_conflict(9), xas_prev(9), xas_next(9)

like… that's a lot of friends and honestly? obsessed πŸ¦‹


ok that's the whole page bestie, go forth and embed your xarray, she's small and she's perfect πŸ’œ

and for the sign-off credits moment: this page is from ./include/linux, version/date October 2026, and the manual name is struct xarray(9) β€” periodt πŸŽ€β­πŸ’–

πŸ“¦ where this page comes from