![]() |
reactor-c 1.0
C Runtime for Lingua Franca
|
Common declarations for runtime infrastructure (RTI) for scheduling enclaves and distributed Lingua Franca programs. More...
#include <errno.h>#include <assert.h>#include "low_level_platform.h"#include "util.h"#include "tag.h"#include "tracepoint.h"Go to the source code of this file.
Data Structures | |
| struct | minimum_delay_t |
| Struct for minimum delays from upstream nodes. More... | |
| struct | rti_common_t |
| Common RTI data structure for both remote standalone RTI and local RTI used in enclaved execution. More... | |
| struct | scheduling_node_t |
| Information about the scheduling nodes coordinated by the RTI. More... | |
| struct | tag_advance_grant_t |
Typedefs | |
| typedef enum execution_mode_t | execution_mode_t |
| Mode of execution of a federate. | |
| typedef struct minimum_delay_t | minimum_delay_t |
| Struct for minimum delays from upstream nodes. | |
| typedef struct rti_common_t | rti_common_t |
| Common RTI data structure for both remote standalone RTI and local RTI used in enclaved execution. | |
| typedef enum scheduling_node_state_t | scheduling_node_state_t |
| State of the scheduling node during execution. | |
| typedef struct scheduling_node_t | scheduling_node_t |
| Information about the scheduling nodes coordinated by the RTI. | |
Enumerations | |
| enum | execution_mode_t { FAST , REALTIME } |
| Mode of execution of a federate. More... | |
| enum | scheduling_node_state_t { NOT_CONNECTED , GRANTED , PENDING } |
| State of the scheduling node during execution. More... | |
Functions | |
| void | _logical_tag_complete (scheduling_node_t *e, tag_t completed) |
| Update the completed tag for the specified node. | |
| tag_t | downstream_next_event_tag (scheduling_node_t *node, uint16_t node_sending_new_net_id) |
| Determine whether the specified scheduling node is needed to receive a downstream next event tag (DNET), and, if so, return the details. | |
| tag_t | earliest_future_incoming_message_tag (scheduling_node_t *e) |
| Given a node (enclave or federate), find the tag of the earliest possible incoming message (EIMT) from upstream enclaves or federates, which will be the smallest upstream NET plus the least delay. | |
| tag_t | eimt_strict (scheduling_node_t *e) |
| Given a node (enclave or federate), find the earliest incoming message tag (EIMT) from any immediately upstream node that is not part of zero-delay cycle (ZDC). | |
| void | free_scheduling_nodes (scheduling_node_t **scheduling_nodes, uint16_t number_of_scheduling_nodes) |
| Free dynamically allocated memory on the scheduling nodes and the scheduling node array itself. | |
| tag_t | get_dnet_candidate (tag_t next_event_tag, tag_t minimum_delay) |
| Find the tag g that is the latest tag that satisfies lf_tag_add(g, minimum_delay) < next_event_tag. | |
| void | initialize_rti_common (rti_common_t *rti_common) |
| Initialize the fields of the rti_common struct. | |
| void | initialize_scheduling_node (scheduling_node_t *e, uint16_t id) |
| Initialize the scheduling node with the specified ID. | |
| void | invalidate_min_delays () |
| Invalidate the min_delays, num_min_delays, and the fields that indicate cycles of all nodes. | |
| bool | is_in_cycle (scheduling_node_t *node) |
| Return true if the node is in a cycle (possibly a zero-delay cycle). | |
| bool | is_in_zero_delay_cycle (scheduling_node_t *node) |
| Return true if the node is in a zero-delay cycle. | |
| void | notify_advance_grant_if_safe (scheduling_node_t *e) |
| Either send to a federate or unblock an enclave to give it a tag. | |
| void | notify_downstream_advance_grant_if_safe (scheduling_node_t *e, bool visited[]) |
| For all scheduling nodes downstream of the specified node, determine whether they should be notified of a TAG or PTAG and notify them if so. | |
| void | notify_downstream_next_event_tag (scheduling_node_t *e, tag_t tag) |
| Notify a downstream next event tag (DNET) signal to the specified scheduling node. | |
| void | notify_provisional_tag_advance_grant (scheduling_node_t *e, tag_t tag) |
| Notify a provisional tag advance grant (PTAG) message to the specified scheduling node. | |
| void | notify_tag_advance_grant (scheduling_node_t *e, tag_t tag) |
| Notify a tag advance grant (TAG) message to the specified scheduling node. | |
| tag_advance_grant_t | tag_advance_grant_if_safe (scheduling_node_t *e) |
| Determine whether the specified scheduling node is eligible for a tag advance grant, (TAG) and, if so, return the details. | |
| void | update_min_delays () |
| If necessary, update the min_delays and the fields that indicate cycles. | |
| void | update_scheduling_node_next_event_tag_locked (scheduling_node_t *e, tag_t next_event_tag) |
| Update the next event tag of an scheduling node. | |
Common declarations for runtime infrastructure (RTI) for scheduling enclaves and distributed Lingua Franca programs.