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

Domain subsystem types — the central DGP entity, its strands, and its asynchronous signal mechanism. More...

import std;
import lib.rbtree;
import lib.error;
import arch.s390x.sched.types;
import arch.s390x.mmu.types;
import zxfoundation.base.types;
import arch.s390x.cpu.aste.consts;
import zxfoundation.base.typestate;
import zxfoundation.scoms.kobject.base;
import lib.list;
import zxfoundation.memory.vm.types;
import zxfoundation.sched.entity;
import zxfoundation.sched.rt.bandwidth;
import zxfoundation.sync.qspinlock.core;
import zxfoundation.dgp.sync_contract;
import zxfoundation.sched.cbs.core;
import zxfoundation.dgp.signal.types;
import zxfoundation.sched.policy;
import zxfoundation.sched.sd.types;
import zxfoundation.dgp.isolation.types;
import zxfoundation.sched.nohz.core;
Include dependency graph for types.cxxm:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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...

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.

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...

Functions

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 &
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

Variables

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.
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.
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.
constexpr strand_id zxfoundation::dgp::domain::STRAND_ID_INVALID = 0xFFFF'FFFFU
 Sentinel value: no strand.

Detailed Description

Domain subsystem types — the central DGP entity, its strands, and its asynchronous signal mechanism.

SPDX-License-Identifier: Apache-2.0

Enumeration Type Documentation

◆ domain_flags

enum class zxfoundation::dgp::domain::domain_flags : u32
exportstrong

Per-domain flags (bitfield).

Enumerator
idle 

Idle domain (per-CPU).

need_resched 

Reschedule requested.

nucleus 

The kernel itself — immortal, never destroyed.

◆ strand_flags

enum class zxfoundation::dgp::domain::strand_flags : u8
exportstrong

Per-strand flags (bitfield, stored in strand::flags).

Enumerator
idle 

Idle strand (per-CPU, owner is nullptr).