ZXFoundation™ 26h2
Loading...
Searching...
No Matches
core.cxx File Reference

Signal delivery implementation. More...

import lib.error;
import zxfoundation.base.typestate;
import zxfoundation.sys.printk.core;
import zxfoundation.base.types;
import std;
import zxfoundation.scoms.kobject.ref;
import zxfoundation.dgp.domain.types;
import zxfoundation.dgp.signal.types;
Include dependency graph for core.cxx:

Data Structures

struct  zxfoundation::dgp::signal::domain
 The domain struct — the central entity of the DGP kernel. More...

Enumerations

enum class  zxfoundation::dgp::signal::domain_flags
 Per-domain flags (bitfield).

Functions

auto zxfoundation::dgp::signal::deliver_entry (domain &d, signal_entry entry) noexcept -> bool
 Inner: dispatch a dequeued entry to its registered handler, falling back to its signal_default action when no handler is installed.
auto zxfoundation::dgp::signal::signal_block (domain &d, u32 mask) noexcept -> void
 Update the per-domain blocked mask.
auto zxfoundation::dgp::signal::signal_blocked_mask (const domain &d) noexcept -> u32
 Return the current blocked mask.
auto zxfoundation::dgp::signal::signal_deliver_all (domain &d) noexcept -> bool
 Deliver all pending signals to the domain.
auto zxfoundation::dgp::signal::signal_deliver_one (domain &d) noexcept -> bool
 Deliver one unblocked pending signal to the domain.
auto zxfoundation::dgp::signal::signal_enqueue (domain &d, signal_kind kind, u64 data) noexcept -> void
 Queue a signal for asynchronous delivery to a domain.
auto zxfoundation::dgp::signal::signal_register_handler (domain &d, signal_kind kind, const signal_handler_info &info) noexcept -> std::expected< void, lib::kernel_error >
 Register a signal handler for the given domain and kind.

Detailed Description

Signal delivery implementation.

SPDX-License-Identifier: Apache-2.0

Function Documentation

◆ signal_block()

auto zxfoundation::dgp::signal::signal_block ( domain & d,
u32 mask )->void
exportnoexcept

Update the per-domain blocked mask.

Update the per-domaindomain blocked mask.

◆ signal_deliver_all()

auto zxfoundation::dgp::signal::signal_deliver_all ( domain & d) ->bool
exportnoexcept

Deliver all pending signals to the domain.

Deliver all pending signals to the domain::domain.

Returns
true if the domain should be rescheduled (terminate default was taken).
true if the domain::domain should be rescheduled (terminate default was taken).

◆ signal_deliver_one()

auto zxfoundation::dgp::signal::signal_deliver_one ( domain & d) ->bool
exportnoexcept

Deliver one unblocked pending signal to the domain.

Deliver one unblocked pending signal to the domain::domain.

Returns
True if a signal was delivered; false if the queue was empty or every pending kind was blocked.

◆ signal_enqueue()

auto zxfoundation::dgp::signal::signal_enqueue ( domain & d,
signal_kind kind,
u64 data )->void
exportnoexcept

Queue a signal for asynchronous delivery to a domain.

Queue a signal for asynchronous delivery to a domain::domain.

Parameters
[in,out]dThe target domain.
[in]kindSignal kind.
[in]dataOpaque payload.
[in,out]dThe target domain::domain.
[in]kindSignal kind.
[in]dataOpaque payload.

◆ signal_register_handler()

auto zxfoundation::dgp::signal::signal_register_handler ( domain & d,
signal_kind kind,
const signal_handler_info & info )->std::expected< void, lib::kernel_error >
nodiscardexportnoexcept

Register a signal handler for the given domain and kind.

Register a signal handler for the given domain::domain and kind.

Parameters
[in,out]dThe target domain.
[in]kindThe signal kind to handle.
[in]infoHandler descriptor (function, user data, default).
Returns
Success, or kernel_error if kind is out of range.
Parameters
[in,out]dThe target domain::domain.
[in]kindThe signal kind to handle.
[in]infoHandler descriptor (function, user data, default).
Returns
Success, or kernel_error if kind is out of range.