12#if defined STANDALONE_RTI || defined LF_ENCLAVES
24typedef enum execution_mode_t { FAST, REALTIME } execution_mode_t;
27typedef enum scheduling_node_state_t {
31} scheduling_node_state_t;
34typedef struct minimum_delay_t {
49typedef struct scheduling_node_t {
54 tag_t last_provisionally_granted;
56 scheduling_node_state_t state;
63 execution_mode_t mode;
64 minimum_delay_t* min_delays;
65 size_t num_min_delays;
74typedef struct rti_common_t {
76 scheduling_node_t** scheduling_nodes;
79 int32_t number_of_scheduling_nodes;
85 int num_scheduling_nodes_handling_stop;
105void initialize_rti_common(rti_common_t* rti_common);
119void _logical_tag_complete(scheduling_node_t* e,
tag_t completed);
127void initialize_scheduling_node(scheduling_node_t* e, uint16_t
id);
139void notify_downstream_advance_grant_if_safe(scheduling_node_t* e,
bool visited[]);
154void notify_tag_advance_grant(scheduling_node_t* e,
tag_t tag);
165void notify_advance_grant_if_safe(scheduling_node_t* e);
179void notify_provisional_tag_advance_grant(scheduling_node_t* e,
tag_t tag);
212tag_advance_grant_t tag_advance_grant_if_safe(scheduling_node_t* e);
224void update_scheduling_node_next_event_tag_locked(scheduling_node_t* e,
tag_t next_event_tag);
234tag_t earliest_future_incoming_message_tag(scheduling_node_t* e);
246tag_t eimt_strict(scheduling_node_t* e);
252bool is_in_zero_delay_cycle(scheduling_node_t* node);
258bool is_in_cycle(scheduling_node_t* node);
267void update_min_delays_upstream(scheduling_node_t* node);
276void invalidate_min_delays_upstream(scheduling_node_t* node);
281void free_scheduling_nodes(scheduling_node_t** scheduling_nodes, uint16_t number_of_scheduling_nodes);
void * lf_mutex_t
Definition lf_arduino_support.h:118
Time and tag definitions and functions for Lingua Franca.
int64_t interval_t
Definition tag.h:71
Definitions of tracepoint functions for use with the C code generator and any other code generator th...