STRUCT XARRAY(9)
π 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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms