reactor-c
C Runtime for Lingua Franca
Loading...
Searching...
No Matches
tag.h
Go to the documentation of this file.
1
11#ifndef TAG_H
12#define TAG_H
13
14#define NSEC(t) (t * 1LL)
15#define NSECS(t) (t * 1LL)
16#define USEC(t) (t * 1000LL)
17#define USECS(t) (t * 1000LL)
18#define MSEC(t) (t * 1000000LL)
19#define MSECS(t) (t * 1000000LL)
20#define SEC(t) (t * 1000000000LL)
21#define SECS(t) (t * 1000000000LL)
22#define SECOND(t) (t * 1000000000LL)
23#define SECONDS(t) (t * 1000000000LL)
24#define MINUTE(t) (t * 60000000000LL)
25#define MINUTES(t) (t * 60000000000LL)
26#define HOUR(t) (t * 3600000000000LL)
27#define HOURS(t) (t * 3600000000000LL)
28#define DAY(t) (t * 86400000000000LL)
29#define DAYS(t) (t * 86400000000000LL)
30#define WEEK(t) (t * 604800000000000LL)
31#define WEEKS(t) (t * 604800000000000LL)
32
33#define NEVER LLONG_MIN
34#define NEVER_MICROSTEP 0u
35#define FOREVER LLONG_MAX
36#define FOREVER_MICROSTEP UINT_MAX
37#define NEVER_TAG (tag_t) { .time = NEVER, .microstep = NEVER_MICROSTEP }
38// Need a separate initializer expression to comply with some C compilers
39#define NEVER_TAG_INITIALIZER { NEVER, NEVER_MICROSTEP }
40#define FOREVER_TAG (tag_t) { .time = FOREVER, .microstep = FOREVER_MICROSTEP }
41// Need a separate initializer expression to comply with some C compilers
42#define FOREVER_TAG_INITIALIZER { FOREVER, FOREVER_MICROSTEP }
43#define ZERO_TAG (tag_t) { .time = 0LL, .microstep = 0u }
44
45// Convenience for converting times
46#define BILLION 1000000000LL
47
48#include <stdint.h>
49#include <stddef.h>
50#include <limits.h>
51
53
58typedef int64_t instant_t;
59
63typedef int64_t interval_t;
64
68typedef uint32_t microstep_t;
69
77
79
84tag_t lf_tag(void* env);
85
93
104int lf_tag_compare(tag_t tag1, tag_t tag2);
105
124tag_t lf_delay_tag(tag_t tag, interval_t interval);
125
142
151instant_t lf_time_logical(void* env);
152
160
168
176
184
192
207#define LF_TIME_BUFFER_LENGTH 80
208
223size_t lf_readable_time(char* buffer, instant_t time);
224
234size_t lf_comma_separated_time(char* buffer, instant_t time);
235
236#endif // TAG_H
#define lf_tag()
Definition set.h:218
#define lf_time_logical()
Definition set.h:221
#define lf_time_logical_elapsed()
Definition set.h:222
Definition tag.h:73
microstep_t microstep
Definition tag.h:75
instant_t time
Definition tag.h:74
void lf_set_physical_clock_offset(interval_t offset)
Definition tag.c:190
size_t lf_readable_time(char *buffer, instant_t time)
Definition tag.c:194
int lf_tag_compare(tag_t tag1, tag_t tag2)
Definition tag.c:129
instant_t lf_time_physical(void)
Definition tag.c:178
int64_t instant_t
Definition tag.h:58
instant_t lf_time_start(void)
Definition tag.c:186
instant_t lf_time_physical_elapsed(void)
Definition tag.c:182
tag_t lf_tag_add(tag_t a, tag_t b)
Definition tag.c:119
uint32_t microstep_t
Definition tag.h:68
size_t lf_comma_separated_time(char *buffer, instant_t time)
Definition tag.c:276
int64_t interval_t
Definition tag.h:63
tag_t lf_delay_strict(tag_t tag, interval_t interval)
Definition tag.c:160
tag_t lf_delay_tag(tag_t tag, interval_t interval)
Definition tag.c:143
char buffer[BUFFER_SIZE]
Definition trace_util.c:41