tin  1.5.9
runtime.h
Go to the documentation of this file.
1 // Copyright (c) 2026 Tinverse LLC. All rights reserved.
2 // SPDX-License-Identifier: LicenseRef-Tinverse-Commercial
3 
14 
15 #pragma once
16 
17 #include "tsm/runtime/actor.h"
18 #include "tsm/runtime/app.h"
19 #include "tsm/runtime/concepts.h"
20 #include "tsm/runtime/coroutine.h"
21 #include "tsm/runtime/executor.h"
22 #include "tsm/runtime/policy.h"
24 #include "tsm/runtime/resources.h"
25 #include "tsm/runtime/runtime.h"
27 #include "tsm/runtime/sync.h"
28 
29 namespace tsm {
30 
31 template<typename Definition,
32  typename Policy,
33  template<typename> class MachinePolicy =
34  runtime::detail::default_machine_policy>
36 
37 template<typename Definition,
38  typename Policy,
39  template<typename> class MachinePolicy =
40  runtime::detail::default_machine_policy>
42 
43 template<typename... Tasks>
45 {
46  using base = runtime::cooperative_executor<Tasks...>;
47 
48  public:
49  using base::base;
50 };
51 
52 template<typename... Tasks>
54 
55 template<typename... Tasks>
58 {
60 
61  public:
62  using base::base;
63 };
64 
65 template<typename... Tasks>
67  -> priority_cooperative_executor<Tasks...>;
68 
69 template<typename... Runtimes>
70 class runtime_group : public runtime::runtime_group<Runtimes...>
71 {
72  using base = runtime::runtime_group<Runtimes...>;
73 
74  public:
75  using base::base;
76 };
77 
78 template<typename... Runtimes>
79 runtime_group(Runtimes&...) -> runtime_group<Runtimes...>;
80 
81 template<typename... Actors>
82 class actor_group : public runtime::actor_group<Actors...>
83 {
84  using base = runtime::actor_group<Actors...>;
85 
86  public:
87  using base::base;
88 };
89 
90 template<typename... Actors>
91 actor_group(Actors&...) -> actor_group<Actors...>;
92 
101 using runtime::input_port;
103 using runtime::link_all;
107 using runtime::receiver;
108 using runtime::sender;
109 
110 template<typename Runtime, std::size_t Capacity = 16U>
111 class tick_executor : public runtime::tick_executor<Runtime, Capacity>
112 {
114 
115  public:
116  using base::base;
117 };
118 
119 template<typename Runtime>
121 
122 template<typename Runtime, std::size_t Capacity = 16U>
124 
125 template<std::size_t Capacity>
127 
129 
132 
133 using runtime::fits;
135 
136 template<typename Runtime>
138 
139 template<typename Runtime, std::size_t TimerSlots = 0U, typename... Groups>
141  runtime::runtime_resources<Runtime, TimerSlots, Groups...>;
142 
143 template<typename Runtime,
144  resource_budget Budget,
145  std::size_t TimerSlots = 0U,
146  typename... Groups>
148  runtime::resource_contract<Runtime, Budget, TimerSlots, Groups...>;
149 
150 template<typename Profile,
151  typename Runtime,
152  std::size_t TimerSlots = 0U,
153  typename... Groups>
155  runtime::profile_resource_contract<Profile, Runtime, TimerSlots, Groups...>;
156 
157 template<typename Definition>
159  Definition,
161 
162 template<typename Definition,
163  std::size_t Capacity,
164  typename Overflow = overflow::reject_newest>
166  Runtime<Definition,
169 
170 template<typename Definition,
171  std::size_t Capacity,
172  typename Overflow = overflow::reject_newest>
174  Runtime<Definition,
177 
178 } // namespace tsm
Deterministic runtime actor composition.
Small application composition helper for tsm runtimes.
Definition: runtime.h:83
Definition: runtime.h:45
Definition: runtime.h:58
Definition: executor.h:294
Definition: sync.h:473
Definition: sync.h:446
Definition: executor.h:69
Definition: sync.h:409
Definition: executor.h:361
Definition: runtime.h:71
Definition: runtime.h:112
Concepts for runtime queues and dispatch policies.
Static coroutine tasks for tsm runtime executors.
Target-independent executors for tsm runtimes.
actor_link(Source &, Sink &) -> actor_link< Source, Sink >
detail::runtime_impl< Definition, Policy, MachinePolicy > Runtime
Definition: runtime.h:531
concept event_sink
Definition: concepts.h:154
detail::timer_queue< Capacity > timer_queue
Definition: coroutine.h:1963
concept event_source
Definition: concepts.h:162
concept actor_source
Definition: actor.h:62
constexpr input_port< Event, Sink > make_input_port(Sink &sink)
Definition: actor.h:169
concept actor_sink
Definition: actor.h:53
detail::task_resources< Runtime > task_resources
Definition: coroutine.h:1966
bool link_all(Links &... links)
Definition: actor.h:267
concept actor_like
Definition: actor.h:40
constexpr output_port< Event, Source > make_output_port(Source &source)
Definition: actor.h:179
consteval bool fits(resource_snapshot const &snapshot, resource_budget const &budget)
Definition: resources.h:51
void write_resource_manifest(Stream &output, char const *name, resource_snapshot const &snapshot)
Definition: resource_manifest.h:27
Definition: bare_metal.h:20
runtime_group(Runtimes &...) -> runtime_group< Runtimes... >
runtime::Runtime< Definition, Policy, MachinePolicy > Runtime
Definition: runtime.h:35
cooperative_executor(Tasks &...) -> cooperative_executor< Tasks... >
Runtime< Definition, Policy, MachinePolicy > runtime_for
Definition: runtime.h:41
runtime::timer_queue< Capacity > timer_queue
Definition: runtime.h:126
priority_cooperative_executor(Tasks &...) -> priority_cooperative_executor< Tasks... >
runtime::task_resources< Runtime > task_resources
Definition: runtime.h:137
Runtime< Definition, runtime_policy< dispatch_model::per_region_queued, queue_policy< target_storage< Capacity >, Overflow > >> per_region_runtime
Definition: runtime.h:176
Runtime< Definition, runtime_policy< dispatch_model::queued, queue_policy< target_storage< Capacity >, Overflow > >> queued_runtime
Definition: runtime.h:168
runtime::resource_budget resource_budget
Definition: runtime.h:130
tick_executor(Runtime &) -> tick_executor< Runtime >
runtime::inline_executor inline_executor
Definition: runtime.h:128
runtime::resource_snapshot resource_snapshot
Definition: runtime.h:131
Runtime< Definition, runtime_policy< dispatch_model::direct, queue_policy< static_storage< 2 > >> > direct_runtime
Definition: runtime.h:160
actor_group(Actors &...) -> actor_group< Actors... >
Runtime policy tags for dispatch and bounded queue admission.
JSON manifest writer for static runtime resource snapshots.
Static resource accounting for runtimes and task executors.
Fixed-capacity ring queue storage for runtime events.
Definition: policy.h:29
Definition: policy.h:38
Definition: policy.h:52
Aggregate resource summaries for several actor types.
Definition: actor.h:417
Definition: actor.h:280
Definition: actor.h:399
Definition: executor.h:44
Definition: actor.h:73
Definition: actor.h:134
Definition: resources.h:167
Definition: resources.h:37
Definition: resources.h:148
Definition: resources.h:23
Definition: resources.h:96
Definition: policy.h:89
Cooperative synchronization primitives for static tsm tasks.
Runtime implementations for direct, composite-queue, and per-region dispatch.