ZXFoundation™ 26h2
Loading...
Searching...
No Matches
zxfoundation.dgp.domain.types Module Reference

Data Structures

struct  zxfoundation::dgp::domain::domain
 The domain struct — the central entity of the DGP kernel. More...
struct  zxfoundation::dgp::domain::strand
 Strand — the DGP kernel's unit of schedulable execution. More...
struct  zxfoundation::dgp::domain::strand_body
 Cold-field body for a strand. More...
struct  zxfoundation::dgp::domain::strand_create_request
 Request used to create a secondary strand inside a domain. More...

Enumerations

enum class  zxfoundation::dgp::domain::domain_flags : u32 { none = 0 , idle = 1U << 1 , need_resched = 1U << 2 , nucleus = 1U << 3 }
 Per-domain flags (bitfield). More...
enum class  zxfoundation::dgp::domain::strand_flags : u8 { none = 0 , idle = 1U << 0 }
 Per-strand flags (bitfield, stored in strand::flags). More...

Typedefs

using zxfoundation::dgp::domain::domain_id = u32
 Opaque domain identifier.
using zxfoundation::dgp::domain::strand_entry_fn = auto (*)(void*) noexcept -> void
 Domain entry function type used by executor-style strand creation.
using zxfoundation::dgp::domain::strand_id = u32
 Opaque strand identifier.

Functions

 domain (const domain &)=delete
 domain (domain &&)=delete
auto zxfoundation::dgp::domain::is_active_domain (const domain &d) noexcept -> bool
auto zxfoundation::dgp::domain::is_idle_domain (const domain &d) noexcept -> bool
auto zxfoundation::dgp::domain::is_idle_strand (const strand &s) noexcept -> bool
 Check whether a strand is an idle (per-CPU) strand.
constexpr auto zxfoundation::dgp::domain::operator! (domain_flags f) noexcept -> bool
constexpr auto zxfoundation::dgp::domain::operator& (domain_flags a, domain_flags b) noexcept -> domain_flags
constexpr auto zxfoundation::dgp::domain::operator& (strand_flags a, strand_flags b) noexcept -> strand_flags
constexpr auto zxfoundation::dgp::domain::operator&= (domain_flags &a, domain_flags b) noexcept -> domain_flags &
constexpr auto zxfoundation::dgp::domain::operator&= (strand_flags &a, strand_flags b) noexcept -> strand_flags &
auto operator= (const domain &)=delete
auto operator= (domain &&)=delete
auto operator= (const strand &)=delete
auto operator= (strand &&)=delete
auto operator= (const strand_body &)=delete
auto operator= (strand_body &&)=delete
constexpr auto zxfoundation::dgp::domain::operator| (domain_flags a, domain_flags b) noexcept -> domain_flags
 Must match TIF_NEED_RESCHED = 4 in arch/s390x/trap/entry.S.
constexpr auto zxfoundation::dgp::domain::operator| (strand_flags a, strand_flags b) noexcept -> strand_flags
constexpr auto zxfoundation::dgp::domain::operator|= (domain_flags &a, domain_flags b) noexcept -> domain_flags &
constexpr auto zxfoundation::dgp::domain::operator|= (strand_flags &a, strand_flags b) noexcept -> strand_flags &
constexpr auto zxfoundation::dgp::domain::operator~ (domain_flags f) noexcept -> domain_flags
 strand (const strand &)=delete
 strand (strand &&)=delete
 strand_body (const strand_body &)=delete
 strand_body (strand_body &&)=delete

Variables

u8 _pad0 [3] {}
u8 _pad0 [3] {}
u16 _pad_art {0}
u8 _pad_dgp_rev {0}
u8 _pad_pi [1] {}
u64 absolute_deadline_ns {0}
 Runtime consumed during current deadline period.
u64 admin_token {0}
zxfoundation::sched::sched_mask allowed_cpus {}
zxfoundation::sched::sched_mask allowed_numa_nodes {}
void * arg {nullptr}
 Opaque argument passed to entry (kthread mode only).
arch::s390x::cpu::aste::art_context art {}
arch::s390x::mmu::typed_asce< arch::s390x::mmu::dat_level::region_1 > asce {}
void * blocked_on {nullptr}
strand_bodybody {nullptr}
 allocated cold-fields body.
u8 boosted_prio {0}
sched::cbs::cbs_replen cbs {}
u16 cpu {0}
u16 cpu {0}
 Initial CPU affinity; zero is the deterministic bootstrap CPU.
u64 deadline_budget_ns {10'000'000ULL}
u64 deadline_period_ns {100'000'000ULL}
u64 deadline_reserved_ns {0}
u64 deadline_runtime_used_ns {0}
 RT accounting period start.
constexpr domain_id zxfoundation::dgp::domain::DOMAIN_ID_INVALID = 0xFFFF'FFFFU
 Sentinel value: no domain.
constexpr domain_id zxfoundation::dgp::domain::DOMAIN_ID_NUCLEUS = 0U
 The nucleus itself is always domain 0.
lib::list_node domain_list {}
bool enqueue {true}
 True when the scheduler should admit the strand immediately. Must be false in bare mode.
strand_entry_fn entry {nullptr}
 Kernel entry fn (kthread mode); null + non-null uregs selects user mode. null + null uregs selects bare mode.
domain_flags flags {domain_flags::none}
strand_flags flags {strand_flags::none}
u32 gate_count {0}
zxfoundation::dgp::isolation::isolation_rights granted_rights {zxfoundation::dgp::isolation::isolation_rights::none}
scoms::kobject::bobject ko {}
scoms::kobject::bobject ko {}
u64 ksp {0}
 Current kernel stack pointer (offset 120).
u64 kstack_base {0}
 Base VA of the kernel stack.
u64 kstack_top {0}
 Virtual kernel stack top (offset 112).
constexpr u32 zxfoundation::dgp::domain::MAX_DOMAINS = 256U
 Maximum number of domains in the system.
constexpr u32 zxfoundation::dgp::domain::MAX_STRANDS_PER_DOMAIN = 64U
 Maximum strands per domain.
const char * name {nullptr}
char name_storage [64] {}
u8 numa_node {0}
bool on_rq {false}
void * owner {nullptr}
u32 owner_domain {0xFFFF'FFFFU}
 Owning domain identifier.
sched::sched_avg pelt_avg {}
 Conservative absolute deadline key.
u32 pending_rights_revoke_raw {0}
lib::list_node pi_waiters {}
u16 portal_ar_mask {0}
u32 portal_count {0}
strand primary_strand {}
std::atomic< u16 > revocation_epoch {0}
u64 root_phys {0}
u64 rt_budget_ns {20'000'000ULL}
u64 rt_capability_token {0}
u64 rt_period_ns {100'000'000ULL}
u64 rt_period_start_ns {0}
 Runtime consumed during current RT period.
u64 rt_reserved_ns {0}
u64 rt_runtime_used_ns {0}
sched::sched_class_id saved_class {zxfoundation::sched::sched_class_id::fair}
u8 saved_prio {0}
zxfoundation::sched::sched_admission_result sched_admission {}
lib::list_node sched_link {}
zxfoundation::sched::sched_policy sched_policy {}
zxfoundation::sched::sched_entity se {}
signal::signal_queue signal_queue {}
constexpr u8 zxfoundation::dgp::domain::SKEY_NUCLEUS = 0U
 Key 0 = nucleus.
constexpr u8 zxfoundation::dgp::domain::SKEY_USER_BASE = 8U
 First user-assignable storage key.
constexpr u8 zxfoundation::dgp::domain::SKEY_USER_MAX = 15U
 Last user-assignable storage key.
u32 stack_order {2U}
 Kernel stack allocation order; currently constrained to the domain stack order.
u8 storage_key {0}
u32 storage_key_generation {0}
zxfoundation::dgp::isolation::skey_revocation_state storage_key_state {zxfoundation::dgp::isolation::skey_revocation_state::none}
constexpr strand_id zxfoundation::dgp::domain::STRAND_ID_INVALID = 0xFFFF'FFFFU
 Sentinel value: no strand.
lib::list_node strand_list {}
 Link into domain's strand list.
lib::list_head strands {}
sched::sched_substate substate {sched::sched_substate::idle}
zxfoundation::dgp::sync_contract::teardown_phase teardown_phase {zxfoundation::dgp::sync_contract::teardown_phase::none}
arch::s390x::sched::user_regs uregs {}
 User-mode register save area.
arch::s390x::sched::user_regsuregs {nullptr}
 User register snapshot (user mode only). Required when entry is null and the strand is to be runnable. Must have psw_addr != 0.
memory::vm::vm_space vm_space {}

Files

file  zxfoundation/dgp/domain.zcomponent/types.cxxm
 Domain subsystem types — the central DGP entity, its strands, and its asynchronous signal mechanism.