list_bulk_move_tail(9)
π list_bulk_move_tail β ok so hear me out
bestie. welcome to the Kernel API Manual page for list_bulk_move_tail(9). this is the "grab a chunk of a linked list and yeet it to the end" function and honestly? it's giving choreographer. it just moves the whole squad at once instead of one by one π
β¨ NAME β¨
list_bulk_move_tail β move a subsection of a list to its tail π¦
like, a subsection. not the whole thing. a little slice. iconic behavior tbh.
π SYNOPSIS π
void list_bulk_move_tail (struct list_head *head , struct list_head
*first , struct list_head *last );
(it's a void, so don't go looking for a return value, there isn't one, periodt β¨)
π ARGUMENTS π
headβ the head that will follow our entry π like, after the move, this is what comes right after everything you shifted. it's the destination vibe.firstβ first entry to move πΈ the beginning of your little squad.lastβ last entry to move π and yes, it can be the same asfirst. no cap. if it is, congrats, you're moving exactly one entry and it's a whole party of one.
π₯ DESCRIPTION π₯
okay so here's the tea β β move all entries between first and including last before head. the word "including" is doing heavy lifting there, don't skip it, last comes along too π
β οΈ real talk though: all three entries must belong to the same linked list. if they don't, you're not vibing, you're just wrong. this is a hard requirement, not a suggestion π¨
that's literally it. that's the whole function. small, efficient, does one thing well β main character energy fr fr π«Ά
π§ SEE ALSO π§
the whole friend group lives in the kernel file ./include/linux/list.h, and honestly there are so many of them, we're listing every single one because nobody gets left out of the group chat π
LIST_HEAD_INIT(9), LIST_HEAD(9), LIST_HEAD_GUARDED(9), INIT_LIST_HEAD(9), list_add(9), list_add_tail(9), list_add_tail_release(9), list_del(9), list_replace(9), list_replace_init(9), list_swap(9), list_del_init(9), list_move(9), list_move_tail(9), list_is_first(9), list_is_last(9), list_is_head(9), list_empty(9), list_del_init_careful(9), list_empty_careful(9), list_rotate_left(9), list_rotate_to_front(9), list_is_singular(9), list_cut_position(9), list_cut_before(9), list_splice(9), list_splice_tail(9), list_splice_init(9), list_splice_tail_init(9)
the entry-accessor girlies π: list_entry(9), list_first_entry(9), list_last_entry(9), list_first_entry_or_null(9), list_first_entry_or_null_acquire(9), list_last_entry_or_null(9), list_next_entry(9), list_next_entry_circular(9), list_prev_entry(9), list_prev_entry_circular(9)
the iteration squad (yes all of them, don't @ me) π: list_for_each(9), list_for_each_continue(9), list_for_each_prev(9), list_for_each_safe(9), list_for_each_prev_safe(9), list_count_nodes(9), list_entry_is_head(9), list_for_each_entry(9), list_for_each_entry_reverse(9), list_prepare_entry(9), list_for_each_entry_continue(9), list_for_each_entry_continue_reverse(9), list_for_each_entry_from(9), list_for_each_entry_from_reverse(9), list_for_each_entry_safe(9), list_for_each_entry_safe_continue(9), list_for_each_entry_safe_from(9), list_for_each_entry_safe_reverse(9), list_safe_reset_next(9)
and the hlist cousins, who also get an invite π¦: hlist_unhashed(9), hlist_unhashed_lockless(9), hlist_empty(9), hlist_del(9), hlist_del_init(9), hlist_add_head(9), hlist_add_before(9), hlist_add_behind(9), hlist_add_fake(9), hlist_fake(9), hlist_is_singular_node(9), hlist_move_list(9), hlist_splice_init(9), hlist_for_each_entry(9), hlist_for_each_entry_continue(9), hlist_for_each_entry_from(9), hlist_for_each_entry_safe(9), hlist_count_nodes(9)
anyway that's the page π
this little gem comes from ./include/linux, dated October 2026, and yes it's still called list_bulk_move_tail(9) β go move a subsection to the tail, bestie, you got this π«Άβ¨π
π¦ 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