STRUCT KVM_PGTABLE_WALKER(9)
π struct kvm_pgtable_walker(9) β the Kernel API Manual, but make it make sense
okay so bestie, this is a page from the Kernel API Manual β the manual name is literally struct kvm_pgtable_walker(9) and yes we're gonna say it every time because it's iconic. Let's get into it. π
β¨ NAME β¨
struct kvm_pgtable_walker β the little hook you use to get all up in a page-table walk. like, you don't just watch the walk, you get to do stuff during it. main character energy fr fr. π
π¦ SYNOPSIS π¦
struct kvm_pgtable_walker {
const kvm_pgtable_visitor_fn_t cb;
void * const arg;
const enum kvm_pgtable_walk_flags flags;
};
that's the whole struct. three fields. no notes. she's perfect. π
πΈ Members πΈ
cbβ the callback function that gets invoked during the walk. this is your moment, your solo, your time to shine β¨ β when the walker hits the right kind of entry, this bad boy gets called.argβ the argument you hand off to that callback function.void * const, so likeβ¦ it's a pointer that stays a pointer. no take-backs. π«Άflagsβ a bitwise-OR of flags that tell you which entry types should trigger the callback function. so basically you pick and choose which entries get the callback, using OR'd flags. iykyk π
ngl these three are the entire struct, so there's literally nothing else hiding in here. no secret fourth member. stop looking. π
π₯ SEE ALSO π₯
okay so this is the part where the manpage just goes absolutely feral and lists like every single related thing. deep breath. here we go:
- the kernel file
./arch/arm64/include/asm/kvm_pgtable.hβ that's where she lives π struct kvm_pgtable_mm_ops(9)enum kvm_pgtable_stage2_flags(9)enum kvm_pgtable_prot(9)enum kvm_pgtable_walk_flags(9)struct kvm_pgtable(9)kvm_pgtable_hyp_init(9)kvm_pgtable_hyp_destroy(9)kvm_pgtable_hyp_map(9)kvm_pgtable_hyp_unmap(9)kvm_get_vtcr(9)kvm_pgtable_stage2_pgd_size(9)__kvm_pgtable_stage2_init(9)kvm_pgtable_stage2_destroy(9)kvm_pgtable_stage2_destroy_range(9)kvm_pgtable_stage2_destroy_pgd(9)kvm_pgtable_stage2_free_unlinked(9)kvm_pgtable_stage2_create_unlinked(9)kvm_pgtable_stage2_map(9)kvm_pgtable_stage2_annotate(9)kvm_pgtable_stage2_unmap(9)kvm_pgtable_stage2_wrprotect(9)kvm_pgtable_stage2_mkyoung(9)kvm_pgtable_stage2_test_clear_young(9)kvm_pgtable_stage2_relax_perms(9)kvm_pgtable_stage2_split(9)kvm_pgtable_walk(9)kvm_pgtable_get_leaf(9)kvm_pgtable_stage2_pte_prot(9)kvm_pgtable_hyp_pte_prot(9)kvm_tlb_flush_vmid_range(9)
likeβ¦ the way that list just keeps going π that's thirty entries bestie, i counted, do NOT ask me to recount. ate and left no crumbs. π
π§ sign-off π§
this whole page came from ./arch/arm64/include/asm, dated October 2026, and it's filed under struct kvm_pgtable_walker(9) β so yeah, that's the manual name and the version and the date, all cute and accounted for. 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