ZXFoundation™ 26h2
Loading...
Searching...
No Matches
zxfoundation.memory.vm.types Module Reference

Data Structures

struct  zxfoundation::memory::vm::vm_accounting
struct  zxfoundation::memory::vm::vm_page_map
 Lazily-allocated per-VMA page map. More...
struct  zxfoundation::memory::vm::vm_page_slot
struct  zxfoundation::memory::vm::vm_region
struct  zxfoundation::memory::vm::vm_space

Enumerations

enum class  vm_backing : u8 {
  anonymous = 0 , physical = 1 , portal_shared = 2 , file = 3 ,
  ipc_shared = 4
}
 Describes how a vm_region obtains its physical memory.
enum class  vm_flags : u32 {
  none = 0 , fixed = 1U << 0 , anonymous = 1U << 1 , physical = 1U << 2 ,
  portal = 1U << 3 , stack = 1U << 4 , guard = 1U << 5 , pinned = 1U << 6 ,
  dma = 1U << 7 , no_merge = 1U << 8 , user = 1U << 9 , kernel = 1U << 10 ,
  cow = 1U << 11 , file = 1U << 12 , ipc = 1U << 13 , hugepage_1m = 1U << 14 ,
  hugepage_2g = 1U << 15 , shared_read = 1U << 17
}
 Mapping flags controlling allocation and behavior.
enum class  vm_page_state : u8 {
  empty = 0 , resident = 1 , cow = 2 , file_cache = 3 ,
  portal = 4 , ipc = 5
}
enum class  vm_prot : u32 {
  none = 0 , read = 1U << 0 , write = 1U << 1 , exec = 1U << 2 ,
  rw = read | write , rx = read | exec , rwx = read | write | exec
}
 Page protection flags (combinable).

Functions

auto clear () noexcept -> void
auto destroy () noexcept -> void
auto dgp_access () const noexcept -> dgp::memory_contract::memory_access
auto dgp_generation () const noexcept -> u64
auto dgp_rights () const noexcept -> dgp::isolation::isolation_rights
auto dgp_scope () const noexcept -> dgp::memory_contract::memory_scope
auto find_page (u64 page_va) const noexcept -> const vm_page_slot *
auto find_page (u64 page_va) noexcept -> vm_page_slot *
auto find_page (u64 page_va) const noexcept -> const vm_page_slot *
auto find_page (u64 page_va) noexcept -> vm_page_slot *
auto invalidate () const noexcept -> dgp::memory_contract::invalidation_scope
auto mapping_generation () const noexcept -> u64
auto matches (u64 page_va) const noexcept -> bool
auto mo () const noexcept -> const objects::memory_object *
auto mo () noexcept -> objects::memory_object *
auto numa_node () const noexcept -> u8
constexpr auto zxfoundation::memory::vm::operator! (vm_flags f) noexcept -> bool
constexpr auto zxfoundation::memory::vm::operator! (vm_prot f) noexcept -> bool
constexpr auto zxfoundation::memory::vm::operator& (vm_flags a, vm_flags b) noexcept -> vm_flags
constexpr auto zxfoundation::memory::vm::operator& (vm_prot a, vm_prot b) noexcept -> vm_prot
constexpr auto zxfoundation::memory::vm::operator&= (vm_flags &a, vm_flags b) noexcept -> vm_flags &
constexpr auto zxfoundation::memory::vm::operator&= (vm_prot &a, vm_prot b) noexcept -> vm_prot &
auto operator= (const vm_region &)=delete
auto operator= (vm_region &&)=delete
auto operator= (const vm_space &)=delete
auto operator= (vm_space &&)=delete
constexpr auto zxfoundation::memory::vm::operator| (vm_flags a, vm_flags b) noexcept -> vm_flags
constexpr auto zxfoundation::memory::vm::operator| (vm_prot a, vm_prot b) noexcept -> vm_prot
constexpr auto zxfoundation::memory::vm::operator|= (vm_flags &a, vm_flags b) noexcept -> vm_flags &
constexpr auto zxfoundation::memory::vm::operator|= (vm_prot &a, vm_prot b) noexcept -> vm_prot &
constexpr auto zxfoundation::memory::vm::operator~ (vm_flags f) noexcept -> vm_flags
constexpr auto zxfoundation::memory::vm::operator~ (vm_prot f) noexcept -> vm_prot
constexpr auto page_count () const noexcept -> u64
auto release_page (u64 page_va) noexcept -> bool
auto release_page (u64 page_va) noexcept -> bool
auto reserve_capacity (u32 min_capacity) noexcept -> bool
auto reserve_page (u64 page_va) noexcept -> vm_page_slot *
auto reserve_page (u64 page_va) noexcept -> vm_page_slot *
auto set_dgp_access (dgp::memory_contract::memory_access v) noexcept -> void
auto set_dgp_generation (u64 v) noexcept -> void
auto set_dgp_rights (dgp::isolation::isolation_rights v) noexcept -> void
auto set_dgp_scope (dgp::memory_contract::memory_scope v) noexcept -> void
auto set_invalidate (dgp::memory_contract::invalidation_scope v) noexcept -> void
auto set_mapping_generation (u64 v) noexcept -> void
auto set_numa_node (u8 v) noexcept -> void
auto set_storage_key (u8 v) noexcept -> void
constexpr auto size () const noexcept -> u64
auto storage_key () const noexcept -> u8
auto transfer_to (vm_page_slot &target) noexcept -> void
auto zxfoundation::memory::vm::vm_commit_admitted (const vm_space &space, u64 additional_pages) noexcept -> bool
 Test whether additional_pages fit in space's commit budget.
 vm_region (const vm_region &)=delete
 vm_region (vm_region &&)=delete
 vm_space (const vm_space &)=delete
 vm_space (vm_space &&)=delete

Variables

u8 _pad [1] {}
u8 _pad0 [3] {}
u32 _pad_file {0}
u16 _pad_policy {0}
scoms::kobject::bobjectaddress_space_object {nullptr}
u64 asce_val {0}
vm_backing backing {vm_backing::anonymous}
u64 brk {0}
page_cache::cache_binding cache_binding {}
u32 capacity {0}
u64 commit_limit_pages {VM_DEFAULT_COMMIT_LIMIT_PAGES}
 Maximum committed anonymous/physical/IPC pages for this domain.
atomic< u64 > committed {0}
atomic< u64 > committed {0}
u32 count {0}
u64 dgp_generation {0}
u8 dirty {0}
atomic< u64 > fault_count {0}
u32 file_index {0}
void * file_node {nullptr}
void * file_node {nullptr}
u32 file_page_offset {0}
u8 flags {0}
vm_flags flags {vm_flags::none}
objects::memory_object_ref grant_object {}
scoms::kobject::bobject ko {}
u64 limit_pages {0}
sync::qspinlock::qspinlock lock {}
objects::memory_object_ref mapped_extent {}
u64 mapping_generation {0}
objects::memory_object_ref mapping_object {}
u32 max_regions {4096}
constexpr u32 zxfoundation::memory::vm::MAX_VM_REGIONS = 4096U
 Maximum number of VM regions system-wide (SCOMS scoms_table capacity).
u64 mmap_base {0}
u8 numa_node {0}
u32 owner_domain {~0U}
u32 owner_domain {0}
scoms::kobject::bobjectowner_object {nullptr}
vm_spaceowning_space {nullptr}
 Back-pointer to the vm_space whose rb-tree contains this region.
vm_page_map pages {}
u64 phys {0}
u64 phys_base {0}
u32 portal_id {~0U}
vm_prot prot {vm_prot::none}
lib::rb_node rb {}
sync::rcu::rcu_head rcu {}
u32 region_count {0}
atomic< u64 > resident {0}
atomic< u64 > resident {0}
vm_page_slotslots {nullptr}
vm_page_state state {vm_page_state::empty}
u8 storage_key {0}
u32 storage_key_generation {0}
objects::memory_object_ref storage_object {}
u64 total_committed {0}
u64 total_mapped {0}
u64 total_resident {0}
lib::rb_root_cached tree {}
u64 va_end {0}
u64 va_page {0}
u64 va_start {0}
constexpr u64 zxfoundation::memory::vm::VM_DEFAULT_COMMIT_LIMIT_PAGES = 262144ULL
 Default per-domain committed-page budget (1 GiB at 4 KiB pages).
constexpr u64 zxfoundation::memory::vm::VM_MMAP_BASE = 0x0000'0040'0000'0000ULL
constexpr u64 zxfoundation::memory::vm::VM_STACK_TOP = 0x0000'0080'0000'0000ULL
constexpr u64 zxfoundation::memory::vm::VM_USER_END = 0x0000'0080'0000'0000ULL
constexpr u64 zxfoundation::memory::vm::VM_USER_START = 0x0000'0000'0040'0000ULL

Files

file  zxfoundation/memory/vm.zcomponent/types.cxxm
file  zxfoundation/memory/vm.zcomponent/types.cxx