Physical memory manager type definitions. More...
import std;import zxfoundation.scoms.kobject.types;import zxfoundation.memory.numa.types;import zxfoundation.memory.hhdm;import zxfoundation.base.typestate;import zxfoundation.base.types;Data Structures | |
| struct | zxfoundation::memory::pmm::allocation_request |
| Node-aware allocation request used by the PMM compatibility wrappers. More... | |
| struct | zxfoundation::memory::pmm::allocation_result |
| Node-aware allocation result. More... | |
| class | zxfoundation::memory::pmm::folio< State > |
| Move-only, typestate-tracked physical memory allocation. More... | |
| struct | zxfoundation::memory::pmm::frame_desc |
| Compact per-physical-frame metadata record. More... | |
| struct | zxfoundation::memory::pmm::pcp_list |
| One order-specific free list within the PCP. More... | |
| struct | zxfoundation::memory::pmm::pcp_pool |
| Per-CPU page cache block. More... | |
| class | zxfoundation::memory::pmm::typestate< State > |
| Zero-overhead typestate carrier. More... | |
Typedefs | |
| using | zxfoundation::memory::pmm::folio_active = folio<lifecycle_state::active> |
| using | zxfoundation::memory::pmm::folio_embryo = folio<lifecycle_state::embryo> |
Enumerations | |
| enum | zxfoundation::memory::pmm::frame_flags : u8 { ff_none = 0 , zxfoundation::memory::pmm::ff_suspect = 1U << 0 , zxfoundation::memory::pmm::ff_offline = 1U << 1 , zxfoundation::memory::pmm::ff_zeroed = 1U << 2 , zxfoundation::memory::pmm::ff_shared = 1U << 3 , ff_head = 1U << 4 } |
| Per-frame status flags. More... | |
| enum class | zxfoundation::memory::pmm::frame_owner : u8 { none = 0 , reserved = 1 , buddy = 2 , slab = 3 , domain = 4 , page_table = 5 , stack = 6 , device = 7 , reserved_typed_view = 8 } |
| Which subsystem currently owns a physical frame. More... | |
| enum class | zxfoundation::memory::pmm::lifecycle_state |
| Unified lifecycle states for ALL typestate-tracked resources. More... | |
| enum class | zxfoundation::memory::pmm::page_init : u8 { uninitialized = 0 , zeroed = 1 } |
| Replaces GFP_ZERO. | |
| enum class | zxfoundation::memory::pmm::purpose : u8 { generic = 0 , lowcore = 1 , stack = 2 , page_table = 3 , device_dma = 4 , heap = 5 , slab = 6 , frame_desc = 7 , file_cache = 8 , reserved_swap = 9 } |
| Semantic purpose; stored in frame_desc for reverse-lookup. More... | |
| enum class | zxfoundation::memory::pmm::zone : u8 { dma31 = 0 , normal = 1 , count = 2 } |
| Physical address zone. More... | |
Variables | |
| constexpr u64 | zxfoundation::memory::pmm::MAX_FRAMES = (MAX_PHYS_GB << 30) >> PAGE_SHIFT |
| constexpr u32 | zxfoundation::memory::pmm::MAX_ORDER = 10 |
| Largest block: 2^10 pages = 4 MiB. | |
| constexpr u64 | zxfoundation::memory::pmm::MAX_PHYS_GB = 512ULL |
| constexpr u32 | zxfoundation::memory::pmm::PCP_BATCH = 16 |
| Pages bulk-moved between PCP and buddy per refill/drain call. | |
| constexpr u32 | zxfoundation::memory::pmm::PCP_HIGH = 128 |
| Per-list high-watermark. A drain is triggered when count > PCP_HIGH. | |
| constexpr u32 | zxfoundation::memory::pmm::PCP_MAX_ORDER = 3 |
| Maximum order served by the per-CPU page cache (2^3 pages = 32 KiB). | |
| template<purpose P> | |
| constexpr u64 | zxfoundation::memory::pmm::purpose_align = PAGE_SIZE |
| template<> | |
| constexpr u64 | zxfoundation::memory::pmm::purpose_align< purpose::lowcore > = 8192ULL |
| template<purpose P> | |
| constexpr zone | zxfoundation::memory::pmm::purpose_zone = zone::normal |
| template<> | |
| constexpr zone | zxfoundation::memory::pmm::purpose_zone< purpose::device_dma > = zone::dma31 |
| template<> | |
| constexpr zone | zxfoundation::memory::pmm::purpose_zone< purpose::lowcore > = zone::dma31 |
| template<> | |
| constexpr zone | zxfoundation::memory::pmm::purpose_zone< purpose::stack > = zone::dma31 |
| constexpr u64 | zxfoundation::memory::pmm::ZONE_DMA_LIMIT = 2ULL << 30 |
| z/Architecture CCW/CDA 31-bit addressing constraint. | |
Physical memory manager type definitions.
SPDX-License-Identifier: Apache-2.0
|
export |
|
exportstrong |
Which subsystem currently owns a physical frame.
|
strong |
Unified lifecycle states for ALL typestate-tracked resources.
Every SCOMS-managed object, every folio, and every slab cache uses exactly these states. No subsystem may define its own.
|
exportstrong |
Semantic purpose; stored in frame_desc for reverse-lookup.
| Enumerator | |
|---|---|
| lowcore | 8 KiB prefix area; 8 KiB aligned; zone::dma31. |
| slab | Slab cache backing pages. |
| frame_desc | The frame_desc table itself. |
| file_cache | Page-cache resident frame. |
|
exportstrong |