__skb_queue_after(9)
π
__skb_queue_after β Kernel API Manual β¨
okay bestie, welcome to the glow-up of __skb_queue_after(9), straight out of the Kernel API Manual. she's a tiny function with a big job and honestly she ate. let's get into it π
πΈ NAME πΈ
__skb_queue_after β queue a buffer at the list head
(and yes, we're clocking that the NAME line says list head while the description down below says the middle β the docs said what they said, we're not touching it, moving on π)
β SYNOPSIS β
void __skb_queue_after (struct sk_buff_head *list , struct sk_buff *prev
, struct sk_buff *newsk );
three args, no return value, pure vibes. π
π¦ ARGUMENTS π¦
listβ the list you're working with, bestie. that's the one.prevβ the buffer you want your new one placed after. your reference point, your anchor, your main character's understudy.newskβ the buffer getting queued. the one actually sliding into the lineup. β¨
π DESCRIPTION π
so what does she do? she queues a buffer int the middle of a list β and yes, "int" is literally how the manpage spells it, we're keeping it, it's iconic, no cap. π«Ά (think: "in the middle", but make it a typo that survived decades of git history.)
the big deal here, and listen closely because this is the part that matters: this function takes no locks. none. zero. she is lockless and she trusts you completely. so you must hold the required locks before you call her. not "should", not "probably" β must. if you don't, that's on you, not on her. π
π¨ also a hard rule: a buffer cannot be placed on two lists at the same time. pick a list. one list. that's her whole thing. π
π₯ SEE ALSO π₯
so many siblings, bestie, she's got a whole family reunion down here. starting with the kernel file ./include/linux/skbuff.h, and then:
skb checksums(9),skb_frag_size(9),skb_frag_size_set(9),skb_frag_size_add(9),skb_frag_size_sub(9),skb_frag_must_loop(9),skb_frag_foreach_page(9),struct skb_shared_hwtstamps(9),dataref and headerless skbs(9),Basic sk_buff geometry(9),struct sk_buff(9)skb_pfmemalloc(9),skb_dst(9),skb_dstref_steal(9),skb_dstref_restore(9),skb_dst_set(9),skb_dst_set_noref(9),skb_dst_is_noref(9),skb_napi_id(9),skb_unref(9),kfree_skb(9)alloc_skb(9),skb_fclone_busy(9),alloc_skb_fclone(9),skb_pad(9),skb_queue_empty(9),skb_queue_empty_lockless(9),skb_queue_is_last(9),skb_queue_is_first(9),skb_queue_next(9),skb_queue_prev(9)skb_get(9),skb_cloned(9),skb_header_cloned(9),__skb_header_release(9),skb_shared(9),skb_share_check(9),skb_unshare(9)skb_peek(9),__skb_peek(9),skb_peek_next(9),skb_peek_tail(9),skb_queue_len(9),skb_queue_len_lockless(9),__skb_queue_head_init(9)skb_queue_splice(9),skb_queue_splice_init(9),skb_queue_splice_tail(9),skb_queue_splice_tail_init(9),__skb_queue_head(9),__skb_queue_tail(9),__skb_dequeue(9),__skb_dequeue_tail(9),skb_len_add(9)__skb_fill_netmem_desc(9),skb_fill_page_desc(9),skb_fill_page_desc_noacc(9),skb_headroom(9),skb_tailroom(9),skb_availroom(9),skb_reserve(9),skb_tailroom_reserve(9),skb_reset_transport_header_careful(9),skb_set_transport_header_careful(9),pskb_trim_unique(9)skb_orphan(9),skb_orphan_frags(9),__skb_queue_purge_reason(9),netdev_alloc_frag(9),netdev_alloc_skb(9),__dev_alloc_pages(9),__dev_alloc_page(9),dev_page_is_reusable(9),skb_propagate_pfmemalloc(9)skb_frag_off(9),skb_frag_off_add(9),skb_frag_off_set(9),skb_frag_off_copy(9),skb_frag_net_iov(9),skb_frag_page(9),skb_frag_netmem(9),skb_frag_address(9),skb_frag_address_safe(9),skb_frag_phys(9),skb_frag_page_copy(9),__skb_frag_dma_map(9)skb_clone_writable(9),skb_cow(9),skb_cow_head(9),skb_padto(9),__skb_put_padto(9),skb_put_padto(9),skb_linearize(9),skb_has_shared_frag(9),skb_linearize_cow(9)skb_postpull_rcsum(9),skb_postpush_rcsum(9),skb_push_rcsum(9),pskb_trim_rcsum(9),skb_needs_linearize(9),skb_get_timestamp(9),skb_data_move(9),skb_postpull_data_move(9),skb_postpush_data_move(9)skb_complete_tx_timestamp(9),skb_tstamp_tx(9),skb_tx_timestamp(9),skb_complete_wifi_ack(9),skb_checksum_complete(9),struct skb_ext(9),skb_checksum_none_assert(9),skb_head_is_locked(9)
like I said. family reunion. ππ«Ά
π§ a lil sign-off π§
this glowing little page comes to you from the source tree at ./include/linux, dated October 2026, and it's the __skb_queue_after(9) page and no other. go forth, hold your locks, don't put one skb on two lists, and 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