reactor-c
C Runtime for Lingua Franca
|
API for the environment data structure. More...
Go to the source code of this file.
Data Structures | |
struct | environment_t |
Execution environment. This struct contains information about the execution environment. An execution environment maintains a notion of a "current tag" and has its own event queue and scheduler. Normally, there is only one execution environment, but if you use scheduling enclaves, then there will be one for each enclave. More... | |
Macros | |
#define | GLOBAL_ENVIRONMENT NULL |
The global environment. Some operations are not specific to a particular scheduling enclave and therefore have no associated environment. When invoking a function such as lf_critical_section_enter, which requires an environment argument, it may be possible to pass this GLOBAL_ENVIRONMENT. For lf_critical_section_enter, for example, this may acquire a global mutex instead of a mutex specific to a particular scheduling enclave. Most functions that take environment arguments, however, cannot accept the GLOBAL_ENVIRONMENT argument, and passing it will result in an assertion violation. | |
Typedefs | |
typedef struct lf_scheduler_t | lf_scheduler_t |
typedef struct mode_environment_t | mode_environment_t |
typedef struct enclave_info_t | enclave_info_t |
typedef struct watchdog_t | watchdog_t |
typedef struct environment_t | environment_t |
Execution environment. This struct contains information about the execution environment. An execution environment maintains a notion of a "current tag" and has its own event queue and scheduler. Normally, there is only one execution environment, but if you use scheduling enclaves, then there will be one for each enclave. | |
Functions | |
int | environment_init (environment_t *env, const char *name, int id, int num_workers, int num_timers, int num_startup_reactions, int num_shutdown_reactions, int num_reset_reactions, int num_is_present_fields, int num_modes, int num_state_resets, int num_watchdogs, const char *trace_file_name) |
Initialize an environment struct with parameters given in the arguments. | |
void | environment_verify (environment_t *env) |
Verify that the environment is correctly set up. | |
void | environment_free (environment_t *env) |
Free the dynamically allocated memory on the environment struct. | |
void | environment_init_tags (environment_t *env, instant_t start_time, interval_t duration) |
Initialize the start and stop tags on the environment struct. | |
int | _lf_get_environments (environment_t **envs) |
Will update the argument to point to the beginning of the array of environments in this program. | |
API for the environment data structure.
This is an API for creating and destroying environments. An environment is the "context" within which the reactors are executed. The environment contains data structures which are shared among the reactors such as priority queues, the current logical tag, the worker scheduler, and a lot of meta data. Each reactor stores a pointer to its environment on its self-struct. If a LF program has multiple scheduling enclaves, then each enclave will have its own environment.
#define GLOBAL_ENVIRONMENT NULL |
The global environment. Some operations are not specific to a particular scheduling enclave and therefore have no associated environment. When invoking a function such as lf_critical_section_enter, which requires an environment argument, it may be possible to pass this GLOBAL_ENVIRONMENT. For lf_critical_section_enter, for example, this may acquire a global mutex instead of a mutex specific to a particular scheduling enclave. Most functions that take environment arguments, however, cannot accept the GLOBAL_ENVIRONMENT argument, and passing it will result in an assertion violation.
typedef struct enclave_info_t enclave_info_t |
typedef struct environment_t environment_t |
Execution environment. This struct contains information about the execution environment. An execution environment maintains a notion of a "current tag" and has its own event queue and scheduler. Normally, there is only one execution environment, but if you use scheduling enclaves, then there will be one for each enclave.
typedef struct lf_scheduler_t lf_scheduler_t |
typedef struct mode_environment_t mode_environment_t |
typedef struct watchdog_t watchdog_t |
int _lf_get_environments | ( | environment_t ** | envs | ) |
Will update the argument to point to the beginning of the array of environments in this program.
envs | A double pointer which will be dereferenced and modified |
void environment_free | ( | environment_t * | env | ) |
Free the dynamically allocated memory on the environment struct.
env | The environment in which we are executing. |
int environment_init | ( | environment_t * | env, |
const char * | name, | ||
int | id, | ||
int | num_workers, | ||
int | num_timers, | ||
int | num_startup_reactions, | ||
int | num_shutdown_reactions, | ||
int | num_reset_reactions, | ||
int | num_is_present_fields, | ||
int | num_modes, | ||
int | num_state_resets, | ||
int | num_watchdogs, | ||
const char * | trace_file_name ) |
Initialize an environment struct with parameters given in the arguments.
void environment_init_tags | ( | environment_t * | env, |
instant_t | start_time, | ||
interval_t | duration ) |
Initialize the start and stop tags on the environment struct.
void environment_verify | ( | environment_t * | env | ) |
Verify that the environment is correctly set up.
env |