Skip to main content

chronon

Namespaces

Name
chronon::tree
chronon::sender
chronon::params
chronon::observe

Classes

Name
classchronon::VersionedRegister
Lock-free ring buffer of (value, cycle) versions for lookahead-safe shared state.
classchronon::Unit
classchronon::TreeNode
Hierarchical tree node with path-based addressing and parameter inheritance.
classchronon::TimelineSpan
Stateful helper for boolean occupancy/stall spans.
classchronon::TimelineLane
Occupancy lane group: hardware-shaped span and instant events.
classchronon::TimelineGauge
Push-model gauge with optional sample-on-change filtering.
classchronon::TimelineCounter
Deprecated push-model counter track: explicit samples on the Perfetto timeline.
classchronon::TimelineCapacity
Used/free capacity helper backed by two counter tracks.
classchronon::TickableUnit
structchronon::TickSimulationConfig
classchronon::TickSimulation
classchronon::ThreadSafeRegistry
structchronon::TerminationRequest
Context for a termination request: reason, exit code, cycle, unit, message.
classchronon::TerminationController
classchronon::StageReg
N-pipe pipeline register with ping-pong slots and runtime write tracking.
classchronon::StagePipeline
Groups heterogeneous StageReg instances for batch lifecycle calls.
classchronon::SimulationApp
Unified entry point: CLI, YAML override handling, and observation lifecycle.
classchronon::SenderSimulationBuilder
Constructs simulations from YAML configuration in four phases.
classchronon::SenderFactoryRegistry
Thread-safe singleton registry of unit factories keyed by YAML type name.
classchronon::PriorityArbiter
Declarative N-pipe priority arbiter with overflow, bank-conflict, and idle-fill.
classchronon::PortDirectory
classchronon::PortBindingRegistry
classchronon::PortBase
structchronon::PipelinePipe
classchronon::PhasedTickableUnit
classchronon::PhasedAutoRegisteredUnit
AutoRegisteredUnit variant with automatic Phase0/Phase1 dispatch.
structchronon::Phase1
Phase tag for odd cycles; reads slot 1, writes slot 0.
structchronon::Phase0
Phase tag for even cycles; reads slot 0, writes slot 1.
classchronon::ParameterSet
Base for parameter sets backed by self-registering Param members.
classchronon::ParamBase
Type-erased interface for self-registering parameters.
classchronon::Param
Self-registering parameter that hooks into its owning ParameterSet.
classchronon::OutPort
structchronon::ObservationStats
Aggregated per-unit observation statistics.
classchronon::ObservationContext
Per-unit central context for counters, tracing, logging, and epochs.
structchronon::ObservationChannelStats
Per-channel emit/drop counts.
classchronon::ObservableUnit
classchronon::InPort
classchronon::ISenderFactory
Type-erased factory interface for runtime unit creation by YAML type name.
structchronon::Flow
structchronon::EventNameRef
Resolved event-name handle; obtain via "miss"_ev (or EventName<"miss">::ref()).
classchronon::EventCounter
Counter plus optional first-class timeline instant emission.
structchronon::DerivedCounterDef
Transport struct carrying a derived-counter formula from unit to backend.
classchronon::DerivedCounter
Computed counter declared as a unit member alongside raw Counters.
classchronon::Counter
classchronon::Connection
classchronon::CategoryRegistry
Global registry that auto-assigns bit positions for user trace categories.
classchronon::Category
Trace category with automatic bit-position assignment at startup.
classchronon::AutoRegisteredUnit
CRTP base that auto-registers Derived with SenderFactoryRegistry at program load.
structchronon::ArbWinner
Winning request on a pipe; bank_conflict marks a priority win blocked by a conflict.
structchronon::ArbResult
Per-tick arbitration result: winners by pipe, losers, and request counts.
structchronon::ArbRequest
A single arbitration request for one source on one pipe.
structchronon::ArbLoser
A losing request with the reason it was rejected.

Types

Name
enum classUnitState { }
enum classTerminationReason { }
Why the simulation is being terminated.
template <typename T >
using StageReg< T, 1 >
SingleStageReg
using sender::TickSimulationConfigSimulationConfig
using sender::config::SenderSimulationBuilderSimulationBuilder
using sender::TickSimulationSimulation
enum classPortPolicy { }
enum classObservationChannel { }
Identifies the observation channel for per-unit stats tracking.
enum classLoseReason { }
enum classLogLevel { }
using sender::factory::SenderFactoryRegistryFactoryRegistry
enum classCounterId { }
Strongly typed counter identifier; indexes into the counter storage array.
using std::function< double(std::span< const uint64_t >)>ComputeFn
enum classBankConflictPriority { }

Functions

Name
uint32_ttoIndex(CounterId id)
template <FixedString Track,typename Unit >
void
spanEnd(Unit & unit)
template <FixedString Track,typename Unit ,typename Cat ,typename... Items>
void
spanBegin(Unit & unit, Cat category, EventNameRef name, Items &&... items)
Begin/end named occupancy spans without declaring a TimelineLane member.
template <ValidPhase P,std::size_t N,typename Src ,typename Dst >
void
simpleForwardAll(Src & src, Dst & dst)
Forward all pipes from src to dst with stall-aware retention.
template <ValidPhase P,typename Src ,typename Dst >
bool
simpleForward(Src & src, Dst & dst, std::size_t pipe)
template <ValidPhase P,typename Src ,typename Dst ,typename Fn >
bool
processForward(Src & src, Dst & dst, std::size_t pipe, Fn && fn)
template <FixedString Name,typename Unit ,typename Port >
void
portRemaining(Unit & unit, const Port & port, std::string_view unit_name ="sends")
template <FixedString Name,typename Unit ,typename Port >
void
portAvailable(Unit & unit, const Port & port, std::string_view unit_name ="entries")
template <uint16_t Pipe,FixedString Stage,typename Cat ,typename... Items>
void
pipeStageHex(ObservationContext * ctx, Cat category, uint64_t id, Items &&... items)
template <uint16_t Pipe,FixedString Stage,typename Cat ,typename... Items>
void
pipeStage(ObservationContext * ctx, Cat category, uint64_t id, Items &&... items)
template <uint16_t Pipe>
PipelinePipe< Pipe >
pipe()
template <FixedString Track,typename Unit ,typename Cat ,typename... Items>
void
instant(Unit & unit, Cat category, EventNameRef name, Items &&... items)
Emit an instant event on a named track.
template <FixedString Name,typename Unit ,typename T >
void
gauge(Unit & unit, T value, std::string_view unit_name ={})
Emit one push-model counter sample on a named Perfetto counter track.
Flowflow(uint64_t id)
template <FixedString Name,typename Unit ,typename Cat ,typename... Items>
void
event(Unit & unit, Cat category, Items &&... items)
Emit a low-cardinality instant event on the unit's shared "events" track.
voidcpuPause()
template <ValidPhase P,typename Src ,typename Dst ,typename Convert >
bool
convertForward(Src & src, Dst & dst, std::size_t pipe, Convert && convert)
template <FixedString Name,typename Unit ,typename Used ,typename Capacity >
void
capacity(Unit & unit, Used used, Capacity total, std::string_view unit_name ={})
Emit used/free capacity samples on sibling counter tracks.
template <FixedString Key,typename T >
TypedArg< T >
arg(T value)

Types Documentation

enum UnitState

EnumeratorValueDescription

enum TerminationReason

EnumeratorValueDescription

Why the simulation is being terminated.

using SingleStageReg

template <typename T >
using chronon::sender::SingleStageReg = StageReg<T, 1>;

using SimulationConfig

using chronon::SimulationConfig = sender::TickSimulationConfig;

using SimulationBuilder

using chronon::SimulationBuilder = sender::config::SenderSimulationBuilder;

using Simulation

using chronon::Simulation = sender::TickSimulation;

enum PortPolicy

EnumeratorValueDescription

PortPolicy - Selects InPort cancellation/dispatch behavior.

  • LegacyFastPath (default): legacy behavior. cancelYoungerThan/cancelOlderThan use the receiver-side generation/min-key/max-key bound mechanism. The sender path (enqueueStored_, pushFromThread) early-rejects messages that already look canceled. This is the backward-compatible default. Carries the known #7 overlapping-flush gap and #8 generation race in parallel mode; new code that needs strong cancellation guarantees should use StageSelective.
  • StageSelective: optimized for delay=1 stage-register ports with selective cancellation. Each message carries enqueue_cycle (producer's localCycle at push time). cancelYoungerThan(key) installs a StagePredicate {flush_cycle = receiver localCycle, max_keep = key}; predicates are stored in a small fixed-size slot array and retired when the receiver advances past flush_cycle. The sender side does NOT consult receiver state — the filter is applied receiver-side only on pop. This eliminates the cross-thread receiver-atomic read that races in parallel mode (#8) and the overlapping-flush zombie escape (#7).

enum ObservationChannel

EnumeratorValueDescription

Identifies the observation channel for per-unit stats tracking.

enum LoseReason

EnumeratorValueDescription

enum LogLevel

EnumeratorValueDescription

using FactoryRegistry

using chronon::FactoryRegistry = sender::factory::SenderFactoryRegistry;

enum CounterId

EnumeratorValueDescription

Strongly typed counter identifier; indexes into the counter storage array.

using ComputeFn

using chronon::observe::ComputeFn = std::function<double(std::span<const uint64_t>)>;

Receives snapshotted delta values for each source counter (declaration order) and returns the derived value. Invoked on the backend thread at CSV dump time.

enum BankConflictPriority

EnumeratorValueDescription

Functions Documentation

function toIndex

uint32_t toIndex(
CounterId id
)

function spanEnd

template <FixedString Track,
typename Unit >
inline void spanEnd(
Unit & unit
)

function spanBegin

template <FixedString Track,
typename Unit ,
typename Cat ,
typename... Items>
inline void spanBegin(
Unit & unit,
Cat category,
EventNameRef name,
Items &&... items
)

Begin/end named occupancy spans without declaring a TimelineLane member.

function simpleForwardAll

template <ValidPhase P,
std::size_t N,
typename Src ,
typename Dst >
void simpleForwardAll(
Src & src,
Dst & dst
)

Forward all pipes from src to dst with stall-aware retention.

function simpleForward

template <ValidPhase P,
typename Src ,
typename Dst >
bool simpleForward(
Src & src,
Dst & dst,
std::size_t pipe
)

Simple stall-aware forward for a single pipe. If dst already has a write pending for this pipe, retains in src. Returns true if forwarded, false if retained (stalled).

function processForward

template <ValidPhase P,
typename Src ,
typename Dst ,
typename Fn >
bool processForward(
Src & src,
Dst & dst,
std::size_t pipe,
Fn && fn
)

Forward with processing: fn(pipe, data&) called on consumed data before writing to dst. Returns true if forwarded, false if stalled.

function portRemaining

template <FixedString Name,
typename Unit ,
typename Port >
inline void portRemaining(
Unit & unit,
const Port & port,
std::string_view unit_name ="sends"
)

function portAvailable

template <FixedString Name,
typename Unit ,
typename Port >
inline void portAvailable(
Unit & unit,
const Port & port,
std::string_view unit_name ="entries"
)

function pipeStageHex

template <uint16_t Pipe,
FixedString Stage,
typename Cat ,
typename... Items>
inline void pipeStageHex(
ObservationContext * ctx,
Cat category,
uint64_t id,
Items &&... items
)

function pipeStage

template <uint16_t Pipe,
FixedString Stage,
typename Cat ,
typename... Items>
inline void pipeStage(
ObservationContext * ctx,
Cat category,
uint64_t id,
Items &&... items
)

function pipe

template <uint16_t Pipe>
PipelinePipe< Pipe > pipe()

function instant

template <FixedString Track,
typename Unit ,
typename Cat ,
typename... Items>
inline void instant(
Unit & unit,
Cat category,
EventNameRef name,
Items &&... items
)

Emit an instant event on a named track.

function gauge

template <FixedString Name,
typename Unit ,
typename T >
inline void gauge(
Unit & unit,
T value,
std::string_view unit_name ={}
)

Emit one push-model counter sample on a named Perfetto counter track.

function flow

inline Flow flow(
uint64_t id
)

function event

template <FixedString Name,
typename Unit ,
typename Cat ,
typename... Items>
inline void event(
Unit & unit,
Cat category,
Items &&... items
)

Emit a low-cardinality instant event on the unit's shared "events" track.

The event name is a compile-time literal and details are typed annotations: observe::event<"flush">(*this, CAT, arg<"removed">(n)).

function cpuPause

inline void cpuPause()

function convertForward

template <ValidPhase P,
typename Src ,
typename Dst ,
typename Convert >
bool convertForward(
Src & src,
Dst & dst,
std::size_t pipe,
Convert && convert
)

Cross-type forward: convert(pipe, src_data) returns dst_data. Returns true if forwarded, false if stalled.

function capacity

template <FixedString Name,
typename Unit ,
typename Used ,
typename Capacity >
inline void capacity(
Unit & unit,
Used used,
Capacity total,
std::string_view unit_name ={}
)

Emit used/free capacity samples on sibling counter tracks.

function arg

template <FixedString Key,
typename T >
inline TypedArg< T > arg(
T value
)

Updated on 2026-07-06 at 09:03:33 +0000