class VmAddressRegion
Defined at line 631 of file ../../zircon/kernel/vm/include/vm/vm_address_region.h
A representation of a contiguous range of virtual address space
Public Methods
zx_status_t CreateRootLocked (VmAspace &aspace,uint32_tvmar_flags,fbl::RefPtr<VmAddressRegion> *out)
Creates a root region. This will span the entire aspace
Defined at line 73 of file ../../zircon/kernel/vm/vm_address_region.cc
zx_status_t CreateSubVmar (size_toffset,size_tsize,uint8_talign_pow2,uint32_tvmar_flags,const char *name,fbl::RefPtr<VmAddressRegion> *out)
Creates a subregion of this region
Defined at line 271 of file ../../zircon/kernel/vm/vm_address_region.cc
zx::result<MapResult> CreateVmMapping (size_tmapping_offset,size_tsize,uint8_talign_pow2,uint32_tvmar_flags,fbl::RefPtr<VmObject>vmo,uint64_tvmo_offset,arch_mmu_flags_tarch_mmu_flags,const char *name)
Defined at line 297 of file ../../zircon/kernel/vm/vm_address_region.cc
fbl::RefPtr<VmAddressRegionOrMapping> FindRegion (vaddr_t addr)
Finds the child region that contains the given addr. If addr is in a gap,
returns nullptr. This is a non-recursive search.
Defined at line 445 of file ../../zircon/kernel/vm/vm_address_region.cc
fbl::RefPtr<VmAddressRegionOrMapping> FindRegionLocked (vaddr_t addr)
Defined at line 450 of file ../../zircon/kernel/vm/vm_address_region.cc
zx_status_t SetMemoryPriorityLocked (MemoryPriority priority)
Applies the given memory priority to this VMAR, which may or may not result in a change. Up to
the derived type to know how to apply and update the |memory_priority_| field.
Defined at line 1202 of file ../../zircon/kernel/vm/vm_address_region.cc
zx_status_t RangeOp (RangeOpTypeop,vaddr_tbase,size_tlen,VmAddressRegionOpChildrenop_children,user_inout_ptr<void>buffer,size_tbuffer_size)
Apply |op| to VMO mappings in the specified range of pages.
Defined at line 664 of file ../../zircon/kernel/vm/vm_address_region.cc
const char * name ()
Defined at line 696 of file ../../zircon/kernel/vm/include/vm/vm_address_region.h
zx_status_t Unmap (vaddr_tbase,size_tsize,VmAddressRegionOpChildrenop_children)
Unmap a subset of the region of memory in the containing address space,
returning it to this region to allocate. If a subregion is entirely in
the range, and op_children is Yes, that subregion is destroyed. If a subregion is partially in
the range, Unmap() will fail.
Defined at line 841 of file ../../zircon/kernel/vm/vm_address_region.cc
zx_status_t Protect (vaddr_tbase,size_tsize,arch_mmu_flags_tnew_arch_mmu_flags,VmAddressRegionOpChildrenop_children)
Change protections on a subset of the region of memory in the containing
address space. If the requested range overlaps with a subregion and op_children is No,
Protect() will fail, otherwise the mapping permissions in the sub-region may only be reduced.
Defined at line 934 of file ../../zircon/kernel/vm/vm_address_region.cc
zx_status_t ReserveSpace (const char *name,size_tbase,size_tsize,arch_mmu_flags_tarch_mmu_flags)
Reserve a memory region within this VMAR. This region is already mapped in the page table with
|arch_mmu_flags|. VMAR should create a VmMapping for this region even though no physical pages
need to be allocated for this region.
Defined at line 1119 of file ../../zircon/kernel/vm/vm_address_region.cc
bool has_parent ()
Defined at line 613 of file ../../zircon/kernel/vm/vm_address_region.cc
void DumpLocked (uint depth, bool verbose)
Defined at line 618 of file ../../zircon/kernel/vm/vm_address_region.cc
VmMapping * FindMappingLocked (vaddr_t va)
Recursively traverses the regions for a given virtual address and returns a raw pointer to a
mapping if one is found. The returned pointer is only valid as long as the aspace lock remains
held.
Defined at line 490 of file ../../zircon/kernel/vm/vm_address_region.cc
zx_status_t SetMemoryPriority (MemoryPriority priority)
Apply a memory priority to this VMAR and all of its subregions.
Defined at line 1182 of file ../../zircon/kernel/vm/vm_address_region.cc
AttributionCounts GetAttributedMemory ()
Defined at line 461 of file ../../zircon/kernel/vm/vm_address_region.cc
void VmAddressRegion (VmAspace &aspace,vaddr_tbase,size_tsize,uint32_tvmar_flags)
Constructors are public as LazyInit cannot use them otherwise, even if friended, but
otherwise should be considered private and Create...() should be used instead.
Defined at line 49 of file ../../zircon/kernel/vm/vm_address_region.cc
void VmAddressRegion (VmAddressRegion &parent,vaddr_tbase,size_tsize,uint32_tvmar_flags,const char *name)
Defined at line 59 of file ../../zircon/kernel/vm/vm_address_region.cc
zx_status_t EnumerateChildren (VmEnumerator * ve)
Traverses this vmar (and any sub-vmars) starting at this node, in depth-first pre-order. See
VmEnumerator for more details. If this vmar is not alive (in the LifeCycleState sense) or
otherwise not enumerable this returns ZX_ERR_BAD_STATE, otherwise the result of enumeration is
returned.
Defined at line 573 of file ../../zircon/kernel/vm/vm_address_region.cc
bool is_in_range (vaddr_t base, size_t size)
Defined at line 719 of file ../../zircon/kernel/vm/include/vm/vm_address_region.h
Protected Methods
void VmAddressRegion (VmAspace & kernel_aspace)
constructor for use in creating the kernel aspace singleton
Defined at line 66 of file ../../zircon/kernel/vm/vm_address_region.cc
void CommitHighMemoryPriority ()
Defined at line 1236 of file ../../zircon/kernel/vm/vm_address_region.cc
Enumerations
enum class RangeOpType
| Name | Value |
|---|---|
| Commit | 0 |
| Decommit | 1 |
| MapRange | 2 |
| Zero | 3 |
| DontNeed | 4 |
| AlwaysNeed | 5 |
| Prefetch | 6 |
Defined at line 663 of file ../../zircon/kernel/vm/include/vm/vm_address_region.h
Records
Friends
template <VmAddressRegionEnumeratorType, typename>
class VmAddressRegionEnumerator
class VmMapping
void VmAddressRegion ()
class Access
class VmAspace