xa_erase_irq(9)
β¨ xa_erase_irq β the Kernel API Manual, bestie edition π
okay so you've wandered into xa_erase_irq(9) from the Linux Kernel API Manual and honestly? you picked a good one. it's short, it's sweet, it deletes things. let's get into it π«Ά
πΈ NAME πΈ
xa_erase_irq β literally just: erase this entry from the XArray. that's the whole vibe check. no cap.
π SYNOPSIS π
void * xa_erase_irq (struct xarray *xa , unsigned long index );
it gives back a void * and it takes two things. we love a simple signature β¨
π¦ ARGUMENTS π¦
xaβ the XArray. like, the whole container you're operating on. your main character data structure πindexβ the index of the entry. which slot we're coming for π
π DESCRIPTION π
so here's the tea π: after this function returns, loading from index will return NULL. gone. deleted. not coming back. the entry has left the chat.
and if the index is part of a multi-index entry? okay this is the important part, don't skip it π β all indices will be erased, and none of the entries will be part of a multi-index entry anymore. the whole squad gets yeeted, not just the one index you pointed at. periodt.
π₯ CONTEXT π₯
Process context. that's non-negotiable bestie.
it takes and releases the xa_lock while disabling interrupts. so like, it's got the lock situation handled for you β but that also means you need to be somewhere interrupts can be disabled, iykyk. don't be weird about it.
β RETURN β
returns the entry which used to be at this index β like, the thing that was there before you erased it. a little souvenir π
π SEE ALSO π
Kernel file ./include/linux/xarray.h β and ok there are a LOT of friends in this family, so buckle up π§:
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_store_irq(9),xa_erase_bh(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 I said. a whole friend group πΈ
lowkey reminder: erasing from a multi-index entry nukes every index in it. that's not a bug, that's just how it is. go forth and be careful π«Ά
and that's the page!! sourced from ./include/linux in this Kernel API Manual, dated October 2026 β mwah, iconic, no notes πβ¨π
π¦ 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