skb_dequeue_tail(9)
π skb_dequeue_tail β kernel API manual, but make it cute
okay so bestie, you opened the man page for skb_dequeue_tail and honestly? iconic choice. this is a <pink>Kernel API Manual</pink> entry and we're gonna get you fluent in it, no cap π«Ά
β¨ NAME β¨
skb_dequeue_tail β remove from the tail of the queue π
πΈ SYNOPSIS πΈ
struct sk_buff * skb_dequeue_tail (struct sk_buff_head *list );
literally just hand it the list and it hands you back an skb. main character function energy β¨
π¦ ARGUMENTS π¦
listβ the list to dequeue from. that's it, that's the whole argument. she's low maintenance π
π DESCRIPTION π
so the whole vibe here: it removes the tail of the list. yes, the tail, not the head β don't get it twisted π
the list lock gets taken, which is the slay part, because it means you can use this function safely alongside other locking list functions. no chaotic race conditions, we behave in this house π§
it returns the tail item, or NULL if the list is empty. that's the whole deal. simple, clean, effective π₯
ngl, always vibe check that return value β NULL means empty list, not a free pass to dereference π
π SEE ALSO π
kernel file ./net/core/skbuff.c, plus this absolute stacked lineup of friends:
drop_reasons_register_subsys(9)drop_reasons_unregister_subsys(9)skb_panic(9)napi_skb_cache_get_bulk(9)__build_skb(9)build_skb_around(9)__napi_build_skb(9)napi_build_skb(9)__alloc_skb(9)__netdev_alloc_skb(9)napi_alloc_skb(9)skb_pp_cow_data(9)skb_pp_frag_ref(9)__kfree_skb(9)sk_skb_reason_drop(9)skb_tx_error(9)consume_skb(9)__consume_stateless_skb(9)napi_consume_skb(9)alloc_skb_for_msg(9)skb_morph(9)skb_copy_ubufs(9)skb_clone(9)skb_copy(9)__pskb_copy_fclone(9)pskb_expand_head(9)skb_expand_head(9)skb_copy_expand(9)__skb_pad(9)pskb_put(9)skb_put(9)skb_push(9)skb_pull(9)skb_pull_data(9)skb_trim(9)__pskb_pull_tail(9)skb_copy_bits(9)skb_store_bits(9)skb_zerocopy(9)skb_dequeue(9)skb_queue_purge_reason(9)skb_rbtree_purge(9)skb_queue_head(9)skb_queue_tail(9)skb_unlink(9)skb_append(9)skb_split(9)skb_shift(9)skb_prepare_seq_read(9)skb_seq_read(9)skb_abort_seq_read(9)skb_copy_seq_read(9)skb_find_text(9)skb_pull_rcsum(9)skb_segment(9)skb_to_sgvec(9)skb_cow_data(9)skb_clone_sk(9)skb_partial_csum_set(9)skb_checksum_setup(9)skb_checksum_maybe_trim(9)skb_checksum_trimmed(9)skb_try_coalesce(9)skb_scrub_packet(9)skb_eth_pop(9)skb_eth_push(9)skb_mpls_push(9)skb_mpls_pop(9)skb_mpls_update_lse(9)skb_mpls_dec_ttl(9)alloc_skb_with_frags(9)skb_condense(9)__skb_ext_alloc(9)__skb_ext_set(9)skb_ext_add(9)skb_attempt_defer_free(9)skb_splice_from_iter(9)
like, that's a whole friend group and every single one of them is invited π
that's the whole page bestie, go forth and dequeue responsibly π
this lil number lives in ./net/core and it's dated October 2026 β so yes, your fave documentation is timestamped and gorgeous, periodt. πβ
π¦ 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