__skb_queue_head_init(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ __skb_queue_head_init (9) β€” the kernel API glow-up you didn't know you needed πŸŽ€

okay so bestie, this one lives in the Kernel API Manual, and it's genuinely such a ✨niche little icon✨ β€” like, it does one thing and it does it flawlessly, no notes πŸ’…


✨ NAME ✨

__skb_queue_head_init β€” initialize the non-spinlock portions of an sk_buff_head πŸ¦‹

✨ SYNOPSIS ✨

void __skb_queue_head_init (struct sk_buff_head *list );

πŸ’– ARGUMENTS πŸ’–

  • list β€” the queue you're initializing. that's it. that's the whole vibe. give it your queue and it goes to work 🫢

🌸 DESCRIPTION 🌸

okay so here's the tea β˜• β€” this function initializes only the list and queue length aspects of an sk_buff_head object. like, just those parts. the list bits, the length bits, done πŸŽ€

and why does that matter, you ask? because it means you can initialize the list aspects of an sk_buff_head without reinitializing things like the spinlock. the way that's so considerate of it, honestly πŸ’… the spinlock gets to keep living its best life, untouched, no reset, no drama 🌈

it can also be used for on-stack sk_buff_head objects where the spinlock is known to not be used πŸ”₯ β€” iykyk, and honestly? iconic. that's main character energy fr fr ⭐

heads up bestie: the whole point is what it does not touch. it does not reinitialize your spinlock, so don't go assuming it did 😭

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./include/linux/skbuff.h β€” and like, the entire sk_buff cinematic universe πŸ’€ buckle up, there's a lot of them, and they're all lowkey important:

  • 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_splice(9)
  • skb_queue_splice_init(9)
  • skb_queue_splice_tail(9)
  • skb_queue_splice_tail_init(9)
  • __skb_queue_after(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)

and that's the whole page bestie 🫢 shoutout to ./include/linux, the version stamp October 2026, and yes β€” this whole glowing little page is filed under __skb_queue_head_init(9) πŸ’œ go forth and initialize responsibly, mwah πŸŒΈπŸ’…

πŸ“¦ where this page comes from