-
- // Region is virtual, offset is physical
- virtual void map(RegionWithOffset region, Flags flags) = 0;
- virtual void unmap(Region region) = 0;
-
- // Sets the flags which are set in mask to their value in flags.
- // Flags not set in mask are untouched.
-
- virtual void set_flags(Region region, Flags flags, Flags mask) = 0;
-
- // Returns the physical address and flags associated with a given
- // virtual address. If flags.Valid is not set, then phys and all
- // other flags are undefined. This function is mainly used for
- // propagating stacked aspace PTEs.
-
- virtual void get_entry(u64 vaddr, u64 *phys, Flags *flags) = 0;
-
- virtual void get_size(u64 *size) = 0;
-
- // This is called when a PTE is replaced. It handles refcounting,
- // dirty page queueing, and TLB invalidation. vaddr is only
- // valid for process address spaces, so it doesn't need to be
- // 64-bit (except on 64-bit hardware, of course). When it is
- // known that only flags are changing, set no_release so that
- // the page refcount is not decremented.
-
- void kill_pte(ulong vaddr, u64 physaddr, bool dirty, bool valid,
- bool no_release = false);
- };
-
- struct BadPageFault {