STRUCT MM_WALK(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

okay bestie, welcome to the Kernel API Manual! Today's main character is struct mm_walk(9), and its whole vibe is walk_page_range data. That's the name, periodt.


✨ SYNOPSIS ✨

struct mm_walk {
    const struct mm_walk_ops *ops;
    struct mm_struct *mm;
    pgd_t *pgd;
    struct vm_area_struct *vma;
    enum page_walk_action action;
    bool no_vma;
    void *private;
 };

πŸŽ€ Members πŸŽ€

  • ops β€” the operation to call during the walk. like, the callback situation πŸ’…
  • mm β€” the mm_struct representing the target process of the page table walk. it's giving "whose memory are we looking at" energy.
  • pgd β€” pointer to PGD; only valid with no_vma (otherwise set to NULL). no cap, that's the rule.
  • vma β€” the vma currently walked (NULL if walking outside vmas). bestie is either in a vma or she's not πŸ’€
  • action β€” next action to perform (see enum page_walk_action). main character energy for what happens next.
  • no_vma β€” walk ignoring vmas (vma will always be NULL). iconic "no vma, no problem" mode.
  • private β€” private data for callbacks' usage. this is the lil stash for the callbacks 🫢

πŸ¦‹ Description πŸ¦‹

the page keeps it mysterious, and honestly it ate:

(see the comment on walk_page_range for more details)

🌈 SEE ALSO 🌈

  • Kernel file ./include/linux/pagewalk.h
  • struct mm_walk_ops(9)
  • struct folio_walk(9)

signed with love from ./include/linux, October 2026, struct mm_walk(9) β€” mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from