134#define tracepoint_reaction_starts(env, reaction, worker) \
135 call_tracepoint(reaction_starts, reaction->self, env->current_tag, worker, worker, reaction->number, NULL, NULL, \
146#define tracepoint_reaction_ends(env, reaction, worker) \
147 call_tracepoint(reaction_ends, reaction->self, env->current_tag, worker, worker, reaction->number, NULL, NULL, \
200#define tracepoint_worker_wait_starts(env, worker) \
201 call_tracepoint(worker_wait_starts, NULL, env->current_tag, worker, worker, -1, NULL, NULL, 0)
210#define tracepoint_worker_wait_ends(env, worker) \
211 call_tracepoint(worker_wait_ends, NULL, env->current_tag, worker, worker, -1, NULL, NULL, 0)
220#define tracepoint_scheduler_advancing_time_starts(env) \
221 call_tracepoint(scheduler_advancing_time_starts, NULL, env->current_tag, -1, -1, -1, NULL, NULL, 0);
230#define tracepoint_scheduler_advancing_time_ends(env) \
231 call_tracepoint(scheduler_advancing_time_ends, NULL, env->current_tag, -1, -1, -1, NULL, NULL, 0)
241#define tracepoint_reaction_deadline_missed(env, reaction, worker) \
242 call_tracepoint(reaction_deadline_missed, reaction->self, env->current_tag, worker, worker, reaction->number, NULL, \
254#if defined(FEDERATED) || defined(LF_ENCLAVES)
368typedef struct trace_t trace_t;
425 int max_num_local_threads) {
429 (void)max_num_local_threads;
436#define tracepoint_reaction_starts(env, reaction, worker) \
442#define tracepoint_reaction_ends(env, reaction, worker) \
448#define tracepoint_worker_wait_starts(env, worker) \
453#define tracepoint_worker_wait_ends(env, worker) \
458#define tracepoint_scheduler_advancing_time_starts(env) \
462#define tracepoint_scheduler_advancing_time_ends(env) \
466#define tracepoint_reaction_deadline_missed(env, reaction, worker) \
void tracepoint_user_value(void *self, char *description, long long value)
Trace a user-defined event with a value.
int64_t instant_t
Time instant.
Definition tag.h:101
void tracepoint_user_event(void *self, char *description)
Trace a user-defined event.
uint32_t microstep_t
Microstep.
Definition tag.h:113
int register_user_trace_event(void *self, char *description)
Register a user trace event.
int64_t interval_t
Interval of time.
Definition tag.h:107
void tracepoint_federate_to_federate(trace_event_t event_type, int fed_id, int partner_id, tag_t *tag)
Trace federate sending a message to another federate.
void tracepoint_federate_from_federate(trace_event_t event_type, int fed_id, int partner_id, tag_t *tag)
Trace federate receiving a message from another federate.
void tracepoint_federate_to_rti(trace_event_t event_type, int fed_id, tag_t *tag)
Trace federate sending a message to the RTI.
void tracepoint_federate_from_rti(trace_event_t event_type, int fed_id, tag_t *tag)
Trace federate receiving a message from the RTI.
int _lf_register_trace_event(void *pointer1, void *pointer2, _lf_trace_object_t type, char *description)
Register a trace object.
void lf_tracing_check_version()
Check if the tracing library is compatible with the current version of the runtime.
void tracepoint_schedule(environment_t *env, trigger_t *trigger, interval_t extra_delay)
Trace a call to schedule.
void call_tracepoint(int event_type, void *reactor, tag_t tag, int worker, int src_id, int dst_id, instant_t *physical_time, trigger_t *trigger, interval_t extra_delay)
Pass the provided info to the tracing module.
void tracepoint_rti_to_federate(trace_event_t event_type, int fed_id, tag_t *tag)
Trace RTI sending a message to a federate.
void tracepoint_rti_from_federate(trace_event_t event_type, int fed_id, tag_t *tag)
Trace RTI receiving a message from a federate.
void lf_tracing_global_init(char *process_name, char *process_names, int process_id, int max_num_local_threads)
Initialize the tracing module.
void lf_tracing_set_start_time(int64_t start_time)
Give the tracing module access to the start time.
void lf_tracing_global_shutdown()
Shut down the tracing module.
trace_event_t
Trace event types.
Definition trace_types.h:20
_lf_trace_object_t
Identifier for what is in the object table.
Definition trace.h:37
Type definitions that are widely used across different parts of the runtime.
Common message types and definitions for federated Lingua Franca programs.
Execution environment.
Definition environment.h:52
A tag is a time, microstep pair.
Definition tag.h:119
A trace record that gets written in binary to the trace file in the default implementation.
Definition tracepoint.h:52
int dst_id
The ID number of the destination (e.g., reaction number or federate ID) or -1 if not applicable.
Definition tracepoint.h:63
instant_t logical_time
The logical time at which the event occurred.
Definition tracepoint.h:66
void * pointer
Pointer identifying the record, typically points to the self struct of a reactor.
Definition tracepoint.h:57
int src_id
The ID number of the source (e.g., worker thread or federate ID) or -1 if not applicable.
Definition tracepoint.h:60
microstep_t microstep
The microstep at which the event occurred.
Definition tracepoint.h:69
trigger_t * trigger
Pointer to the trigger associated with this event, if applicable (e.g., for scheduled events)
Definition tracepoint.h:75
trace_event_t event_type
The type of event being traced (e.g., reaction start, reaction end, etc.)
Definition tracepoint.h:54
interval_t extra_delay
Additional delay specified for the event, if applicable (e.g., for scheduled events)
Definition tracepoint.h:78
instant_t physical_time
The physical time at which the event occurred.
Definition tracepoint.h:72
Trigger struct representing an output, timer, action, or input.
Definition lf_types.h:391
API for the tracing module that records runtime events for debugging and analysis.
Definitions that are needed by both implementors and callers of the trace API regardless of whether t...