ZXFoundation™ 26h2
Loading...
Searching...
No Matches
types.cxxm File Reference

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;
Include dependency graph for types.cxxm:

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.

Detailed Description

Physical memory manager type definitions.

SPDX-License-Identifier: Apache-2.0

Enumeration Type Documentation

◆ frame_flags

Per-frame status flags.

Enumerator
ff_suspect 

MCCK corrected error; still usable.

ff_offline 

MCCK uncorrected; frame excluded from merging and allocation.

ff_zeroed 

Contents are known-zero (set by page_init::zeroed path).

ff_shared 

refcount > 1 (CoW / file cache / shared grant).

◆ frame_owner

enum class zxfoundation::memory::pmm::frame_owner : u8
exportstrong

Which subsystem currently owns a physical frame.

Enumerator
none 

Frame not present / never initialized.

reserved 

Firmware / kernel image / lowcore — permanently off-limits.

buddy 

In the buddy free list or PCP (pmm-owned).

slab 

Backing a slab_cache.

domain 

Backing a domain memory mapping.

page_table 

A page table frame.

stack 

Kernel stack.

device 

DMA / device buffer.

◆ lifecycle_state

enum class zxfoundation::base::lifecycle_state : u8
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.

◆ purpose

enum class zxfoundation::memory::pmm::purpose : u8
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.

◆ zone

enum class zxfoundation::memory::pmm::zone : u8
exportstrong

Physical address zone.

Enumerator
dma31 

[0, 2 GiB): lowcores, AP stacks, CCW channel programs.

normal 

[2 GiB, ∞): page tables, heap, kernel objects.