vma_start_anon_pgoff(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… vma_start_anon_pgoff β€” like, the kernel API manual, but make it make sense

okay so bestie, welcome to vma_start_anon_pgoff(9) πŸ’– this is a page out of the Kernel API Manual and honestly? it's a little cutie. short, sweet, does one thing. let's get into it πŸŽ€


✨ NAME ✨

vma_start_anon_pgoff β€” grab the anonymous page offset of the start of @vma 🫢 that's it. that's the whole job.


🌸 SYNOPSIS 🌸

pgoff_t vma_start_anon_pgoff (const struct vm_area_struct *vma );

like, you hand it a vma and it hands you back a pgoff_t. simple math. no drama. πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • vma β€” the VMA whose anonymous page offset you're out here looking for πŸ‘€ literally just the thing you want the offset of. that's it. give it to her.

πŸ”₯ DESCRIPTION πŸ”₯

okay so here's the tea β˜• this function has like two moods depending on whether the thing got faulted or not:

  • if it's unfaulted, then the value is literally vma->vm_start >> PAGE_SHIFT β€” that's it, just a shift, no cap.
  • if it's faulted, then you get the anonymous page offset at the time of first fault β€” like, the value it had back then, preserved. nostalgic core πŸ₯Ί

also, if the VMA is anonymous? this returns the exact same value as vma_start_pgoff. same vibes, different name. iykyk ✨

and the whole reason this exists β€” this value is what's used for tracking MAP_PRIVATE file-backed mappings by their anonymous page offset. so it's got a job, and it's doing it πŸ’ͺ


πŸ‘‘ RETURN πŸ‘‘

she returns the anonymous page offset of the start of vma. that's the whole return value. periodt. 🌟


🌈 SEE ALSO 🌈

bestie there are SO many friends on this list, buckle up 🎒 β€” the kernel file ./include/linux/mm.h and then, in order:

folio_page_idx(9), vma_flag_t(9), fault_flag_allow_retry_first(9), vma_kernel_pagesize(9), folio_order(9), folio_reset_order(9), folio_mapcount(9), folio_mapped(9), thp_order(9), thp_size(9), folio_get(9), folio_put(9), folio_put_refs(9), folios_put(9), vma_flags_is_cow_mapping(9), vma_is_cow_mapping(9), vma_desc_is_cow_mapping(9), folio_pfn(9), folio_mk_pte(9), folio_mk_pmd(9), folio_mk_pud(9), folio_maybe_dma_pinned(9), is_zero_page(9), is_zero_folio(9), folio_nr_pages(9), folio_next(9), folio_shift(9), folio_size(9), folio_maybe_mapped_shared(9), folio_expected_ref_count(9), zap_vma(9), ptdesc_address(9), ptdesc_set_kernel(9), ptdesc_clear_kernel(9), ptdesc_test_kernel(9), pagetable_alloc(9), pagetable_free(9), vma_lookup(9), vma_start_pgoff(9), vma_end_pgoff(9), vma_last_pgoff(9), vma_end_anon_pgoff(9), vma_last_anon_pgoff(9), mmap_action_remap(9), mmap_action_remap_full(9), mmap_action_ioremap(9), mmap_action_ioremap_full(9), mmap_action_simple_ioremap(9), mmap_action_map_kernel_pages(9), mmap_action_map_kernel_pages_full(9), range_is_subset(9), range_in_vma(9), range_in_vma_desc(9), clear_pages(9)

go read all of them. every single one. i'll wait πŸ’œ


ngl this one's a short read, so if you got here you already ate. go touch some folios πŸ“

that's the whole page!! this little cutie lives in ./include/linux and the version/date on the tin is October 2026 β€” mwah, bye bestie!! πŸ§šπŸ’–πŸŽ€βœ¨

πŸ“¦ where this page comes from