Skip to content

Conversation

@eboasson
Copy link
Contributor

  • windows-2019 runners on Azure have been deprecated
  • Reject negative timeout in dds_find_topic
  • Suppress idlc warning inheritance+appendable
  • Fix ddsrt_thread_getname_anythread snprintf size
  • Associate condition variables with a clock
  • Clean up Windows dds_sleepfor implementation
  • ddsperf option for stopping when no peers remain
  • Add ddsrt_hrtime_t / ddsrt_time_highres
  • Use high-resolution clock in ddsperf
  • Add support for mimalloc

eboasson added 10 commits July 29, 2025 15:25
Signed-off-by: Erik Boasson <eb@ilities.com>
Signed-off-by: Erik Boasson <eb@ilities.com>
This is a IDL file used for testing these combinations, so disabling the warning is
reasonable.

Signed-off-by: Erik Boasson <eb@ilities.com>
The only call site used an actual size larger than sizeof(char *) so this only resulted in
truncation in an error path.

Signed-off-by: Erik Boasson <eb@ilities.com>
This splits out the generic ddsrt_cond_t into 4 different ones:

- ddsrt_cond_t: no associated clock, can't be used with timeouts
- ddsrt_cond_wctime_t: associated with ddsrt_wctime_t
- ddsrt_cond_mtime_t: associated with ddsrt_mtime_t
- ddsrt_cond_etime_t: associated with ddsrt_etime_t

And removes the relative timeouts from the internal interface (this actually simplifies
the code in several cases). For reference:

- wctime is wall-clock time, a.k.a. CLOCK_REALTIME, system time, default clock, ...
- mtime_t is a monotonic clock, ticking only when the machine is running (not suspended)
- etime_t is a monotonic clock, ticking also when the machine is suspended

Not all platforms provide all three, and perhaps on some platforms all three are present
but not actually used by Cyclone DDS. Platforms like macOS where a condition variable
can't be associated with a clock necessarily have to fake it by doing an approximate
conversion of the timeout to the system time.

Note that the generic dds_time_t has the same clock source as ddsrt_wctime_t.

Signed-off-by: Erik Boasson <eb@ilities.com>
Signed-off-by: Erik Boasson <eb@ilities.com>
Signed-off-by: Erik Boasson <eb@ilities.com>
Some platforms (QNX is an example) have low-resolution clocks that one can use for
timeouts, and high-resolution clocks that cannot be used for that. This introduces a
separate "high resolution" time that can be used only for computing time elapsed between
two events.

Signed-off-by: Erik Boasson <eb@ilities.com>
Signed-off-by: Erik Boasson <eb@ilities.com>
Signed-off-by: Erik Boasson <eb@ilities.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant