From 7e31cb0db31639e0f4b57a9bb776e3f0c5eae3e0 Mon Sep 17 00:00:00 2001 From: "W. Eric Norum" Date: Thu, 17 Apr 2008 18:53:54 +0000 Subject: [PATCH] Round off sleep times -- makes timed scan threads work better when high-quality time source (e.g. event receiver) is used. --- src/RTEMS/base/rtems_init.c | 3 ++- src/libCom/osi/os/RTEMS/osdThread.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) 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++; }