pub struct SpaceReferenceMapping {
pub depth: usize,
pub space: SpaceId,
pub our_va: u64,
pub their_va: u64,
}Expand description
A reference from one address space to an intermediate page table
that lives in a different space. Produced by walk_va_spaces when
the walker encounters an intermediate table (at some depth below
the root) whose physical address was already seen via an earlier
root — i.e. the two spaces alias that sub-tree.
Semantics: the level-depth block in our space that contains
VAs starting at our_va is aliased to the level-depth block in
space that contains VAs starting at their_va. Everything below
that sub-tree — PDEs, PTEs, leaf mappings — is shared wholesale.
depth is counted from the root:
depth = 1on i686: the shared thing is a leaf PT (the thing a PDE points to).depth = 1, 2, 3on amd64: PDPT, PD, or PT respectively.
Fields§
§depth: usizeDepth from the root at which the alias starts (1-based).
space: SpaceIdThe “owning” space — the first root that visited this
intermediate PA during walk_va_spaces.
our_va: u64Start VA of the aliased sub-tree in OUR space.
their_va: u64Start VA of the aliased sub-tree in the owning space. Usually
equal to our_va (kernel mappings at the same VA across
processes) but the design permits different VAs.
Trait Implementations§
Source§impl Clone for SpaceReferenceMapping
impl Clone for SpaceReferenceMapping
Source§fn clone(&self) -> SpaceReferenceMapping
fn clone(&self) -> SpaceReferenceMapping
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more