Round off sleep times -- makes timed scan threads work better when

high-quality time source (e.g. event receiver) is used.
This commit is contained in:
W. Eric Norum
2008-04-17 18:53:54 +00:00
parent f6dd8d5654
commit 7e31cb0db3
2 changed files with 5 additions and 3 deletions
+2 -1
View File
@@ -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
+3 -2
View File
@@ -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++;
}