__dev_alloc_page(9)
π
__dev_alloc_page(9) β like, the kernel API manual, bestie β¨
okay so picture this: it's a man page, it lives in the kernel API manual, and it's about snagging a page for network Rx. yes we're in that part of the kernel. no cap, it's a tiny little function but it's carrying the whole receive path on its back. main character energy fr fr π«Ά
πΈ NAME πΈ
__dev_alloc_page β allocate a page for network Rx π
β¨ SYNOPSIS β¨
struct page * __dev_alloc_page (gfp_t gfp_mask );
like, that's the whole signature. she's compact. she's iconic. she returns a struct page * and she takes one gfp_t. periodt. π
π ARGUMENTS π
gfp_maskβ the allocation priority, bestie. and listen: set__GFP_NOMEMALLOCif this is not for network Rx. that's the whole vibe. if it's not network Rx, slap__GFP_NOMEMALLOCon there. iykyk π
π¦ DESCRIPTION π¦
so what does she actually do? she allocates a new page. that's it. that's the function. π
and if there's no free memory? she returns NULL. no drama, no exception, just NULL. so likeβ¦ check your return value, bestie, i'm literally begging π
β SEE ALSO β
okay this is the part where the man page goes absolutely feral and links, like, the entire skbuff cinematic universe. and we're in ./include/linux/skbuff.h, so yeah, it's giving extended universe π every single one of these, no skips:
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_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_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β¦ she said "here's everyone i've ever met." respect. π₯
quick vibe check bestie: this one returns NULL when memory's gone, so like, do not rawdog the dereference, ok? π
π§ sign-off π§
and that's the page!! it lives over in ./include/linux, dated October 2026, and it's filed under __dev_alloc_page(9) in case you need to find her again. go allocate responsibly, bestie β mwah πππ¦
π¦ 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