skb_queue_tail(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– skb_queue_tail(9) β€” like, the Kernel API Manual page, bestie πŸ’–

okay so picture this: you're deep in the kernel, you've got yourself a shiny struct sk_buff, and you just wanna yeet it onto the end of a list. that's it. that's the whole page. pull up a chair, this is from the Kernel API Manual (skb_queue_tail(9) if you're fancy) and we're gonna get you fluent, no cap ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

void skb_queue_tail (struct sk_buff_head *list , struct sk_buff *newsk
);

like, two args, void return, she's not complicated and honestly? iconic for that πŸ’…


πŸŽ€ ARGUMENTS πŸŽ€

  • list β€” the list you're working with, bestie. the destination. the venue, if you will 🎟️
  • newsk β€” the buffer you're queueing up. the guest of honor arriving at the party 🌸

✨ DESCRIPTION ✨

so what she does: this queues a buffer at the tail of the list. end of the line, back of the queue, behind everybody who got there first 😌

she takes the list lock β€” yes, on her own, she handles it β€” so it's totally safe to use alongside the other locking sk_buff functions. fr fr, that's the whole point. 🫢

🚨 okay this part is important: a buffer cannot be placed on two lists at the same time. like, pick one. she's not doing a situationship with two lists. don't do it πŸ’€

🌈 SEE ALSO 🌈

Kernel file ./net/core/skbuff.c β€” go read the source if you're that kind of girl (respect) πŸ‘‘

and here's the whole friend group, everybody she hangs with:

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_dequeue_tail(9), skb_queue_purge_reason(9), skb_rbtree_purge(9), skb_queue_head(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)


and that's the tea πŸ“ go forth and queue responsibly. this cutie lives in ./net/core and the page is dated October 2026 β€” so like, note the timestamp, bestie, and stan a stable API πŸ’œπŸ§šβ€β™€οΈ

πŸ“¦ where this page comes from