skb_availroom(9)
π skb_availroom β bytes at buffer end
okay so this is a page from the Kernel API Manual (yes, the kernel has manpages, she's fancy like that π) and it's all about one lil function that tells you how much room you've got left at the tail of a buffer. short page, but she ate.
β¨ NAME β¨
skb_availroom β bytes at buffer end
like, literally that. bytes. at the end of the buffer. no cap.
πΈ SYNOPSIS πΈ
int skb_availroom (const struct sk_buff *skb );
she takes one thing and gives you back an int, bestie. that's the whole vibe.
π¦ ARGUMENTS π¦
skbβ the buffer you wanna check π that's it, that's the argument.
π DESCRIPTION π
so what she does is: she returns the number of bytes of free space at the tail of an sk_buff β but only one that was allocated by sk_stream_alloc. like, that's her whole personality. free space at the end. count it. return it. iconic.
ngl that's the entire description, bestie β this function is short and knows it. main character energy, zero filler. π
π SEE ALSO π
okay this is where it gets unhinged β the cross-reference list is long long. like, she knows everybody. but fr fr, if you're poking around sk_buff land, these are your people:
- Kernel file
./include/linux/skbuff.hπ (that's the header where all this lives) 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_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_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. she knows everyone. iykyk π«Ά
and that's the whole page, bestie β short, sweet, slays. this one came from ./include/linux and the version/date stamped on it is October 2026, so go forth and count your tail bytes πβπ
π¦ 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