diff --git a/src/RTEMS/base/rtems_init.c b/src/RTEMS/base/rtems_init.c index 2edaae537..481de9774 100644 --- a/src/RTEMS/base/rtems_init.c +++ b/src/RTEMS/base/rtems_init.c @@ -42,7 +42,7 @@ #include "epicsRtemsInitHooks.h" rtems_interval rtemsTicksPerSecond; -double rtemsTicksPerSecond_double; +double rtemsTicksPerSecond_double, rtemsTicksPerTwoSeconds_double; static void logReset (void) @@ -416,6 +416,7 @@ Init (rtems_task_argument ignored) */ rtems_clock_get (RTEMS_CLOCK_GET_TICKS_PER_SECOND, &rtemsTicksPerSecond); rtemsTicksPerSecond_double = rtemsTicksPerSecond; + rtemsTicksPerTwoSeconds_double = rtemsTicksPerSecond_double * 2.0; /* * Explain why we're here diff --git a/src/libCom/osi/os/RTEMS/osdThread.c b/src/libCom/osi/os/RTEMS/osdThread.c index d88f9dcaa..b841a5863 100644 --- a/src/libCom/osi/os/RTEMS/osdThread.c +++ b/src/libCom/osi/os/RTEMS/osdThread.c @@ -366,13 +366,14 @@ epicsThreadSleep (double seconds) { rtems_status_code sc; rtems_interval delay; - extern double rtemsTicksPerSecond_double; + extern double rtemsTicksPerTwoSeconds_double; if (seconds <= 0.0) { delay = 0; } else { - delay = seconds * rtemsTicksPerSecond_double; + delay = seconds * rtemsTicksPerTwoSeconds_double; + delay = (delay + 1) / 2; if (delay == 0) delay++; }