xa_store_irq(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’Ύ 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