added sleep quantum correction using epicsThreadSleepQuantum()

This commit is contained in:
Jeff Hill
2003-03-21 19:26:00 +00:00
parent 4c142e759c
commit 0792aebf95
10 changed files with 115 additions and 28 deletions

View File

@@ -32,7 +32,7 @@ public:
void start ( const epicsTime &expireTime );
void setBegin ( const epicsTime & );
double delay () const;
void checkError () const;
double checkError () const;
protected:
virtual ~delayVerify ();
private:
@@ -67,7 +67,7 @@ inline double delayVerify::delay () const
return delayVerifyOffset + this->expectedDelay;
}
void delayVerify::checkError () const
double delayVerify::checkError () const
{
const double messageThresh = 0.5; // percent
double actualDelay = this->expireStamp - this->beginStamp;
@@ -78,6 +78,7 @@ void delayVerify::checkError () const
printf ( "delay error > %g %%, delay = %g sec, error = %g mSec (%f %%)\n",
messageThresh, this->expectedDelay, measuredError * 1000.0, percentError );
}
return measuredError;
}
inline void delayVerify::start ( const epicsTime &expireTime )
@@ -119,9 +120,13 @@ void testAccuracy ()
while ( expireCount != 0u ) {
expireEvent.wait ();
}
double averageMeasuredError;
for ( i = 0u; i < nTimers; i++ ) {
pTimers[i]->checkError ();
averageMeasuredError += pTimers[i]->checkError ();
}
averageMeasuredError /= nTimers;
printf ("average timer delay error %f mS\n",
averageMeasuredError * 1000 );
queue.release ();
}