STRUCT MMU_INTERVAL_NOTIFIER_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so this is the struct mmu_i...notifier_ops(9) page from the Kernel API Manual, and it's literally about struct mmu_interval_notifier_ops β€” the callback for range notification. no cap, that's the whole NAME vibe. 🫢


✨ SYNOPSIS ✨

here's the struct exactly as it appears, because we do not play with code, periodt:

       struct mmu_interval_notifier_ops {
           bool (*invalidate)(struct mmu_interval_notifier *interval_sub, const
       struct mmu_notifier_range *range, unsigned long cur_seq);
           bool (*invalidate_start)(struct mmu_interval_notifier *interval_sub,
       const struct mmu_notifier_range *range, unsigned long cur_seq, struct
       mmu_interval_notifier_finish **finish);
           void (*invalidate_finish)(struct mmu_interval_notifier_finish
       *finish);
        };

🫢 Members 🫢

  • invalidate β€” okay so when this returns, the caller must stop using any SPTEs within this range. it can sleep, bestie. return false only if sleeping was required but mmu_notifier_range_blockable(range) is false. lowkey crucial. πŸ’…
  • invalidate_start β€” similar to invalidate, but it's for two-pass notifier callbacks, where the call to invalidate_start is the first pass, and any struct mmu_interval_notifier_finish pointer returned in the finish parameter describes the finish pass. if *finish is NULL on return, then no final pass will be called, and invalidate_start needs to implement the full notifier, behaving like invalidate. the value of *finish is guaranteed to be NULL at function entry. very much important. πŸŽ€
  • invalidate_finish β€” called as the second pass for any notifier that returned a non-NULL *finish from invalidate_start. the finish pointer passed here is the same one returned by invalidate_start. iconic. πŸ¦‹

🌈 SEE ALSO 🌈


okay that's the whole page, byeee bestie πŸ’– β€” source: ./include/linux; date: October 2026; page: struct mmu_i...notifier_ops(9); manual: Kernel API Manual.

πŸ“¦ where this page comes from