xa_store_irq(9)
πΎ xa_store_irq β the (9) Kernel API Manual page, bestie edition β¨
Okay so quick vibe check: this is a Kernel API Manual page, and today's main character is xa_store_irq. It's short, it's sweet, it's giving "small but mighty" π
πΈ NAME πΈ
xa_store_irq β bestie, it stores this entry in the XArray. That's it. That's the whole job. π
β¨ SYNOPSIS β¨
void * xa_store_irq (struct xarray *xa , unsigned long index , void
*entry , gfp_t gfp );
π«Ά ARGUMENTS π«Ά
xaβ the XArray itself. The whole container, the moment, the icon. πindexβ the index into the array. Where you're parking your stuff. πentryβ the new entry. Like, the actual thing you're storing. πgfpβ the memory allocation flags. The boring-but-important admin details, no cap. π§Ύ
π DESCRIPTION π
So this function is literally just like calling xa_storeβ¦ except β and this is the whole personality β it disables interrupts while holding the array lock. That's the entire difference, and it's kind of iconic of it, honestly. π¦
π₯ CONTEXT π₯
Process context, bb. It takes and releases the xa_lock while disabling interrupts. Both of those things. At the same time. Multitasking queen behavior. π
Lowkey do not lose track of that detail β the interrupt-disabling is the whole reason this variant exists. π
β RETURN β
It hands you back the old entry at this index β or xa_err if an error happened. So either a little gift from the past, or a little error situation. Either way, check it. π
π SEE ALSO π
Kernel file ./include/linux/xarray.h, plus a genuinely massive friend group of related calls: 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), struct xarray(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_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) β iykyk, it's a whole scene. π
And that's the page, bestie! π This little cutie lives in ./include/linux and the version/date stamp on it is October 2026 β so mark your calendar, screenshot it, frame it, whatever. Slay. π
β¨π¦
π¦ 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