I have a piece of code roughly organized like this:

clock_gettime(CLOCK_REALTIME, &start);
elapsedSecs = 0;
 while (elapsedSecs < SAMPLE_TIME)
 {
/*
 *  Do some stuff
 */
   usleep(10000);   /* 10 ms delay */
   clock_gettime(CLOCK_REALTIME, &now);
   elapsedSecs = now.tv_sec - start.tv_sec;
 }

Realizing that usleep() is not necessarily deterministic, I replaced the
usleep() call with:

delayStart = gethrtime();
 while ((gethrtime() - delayStart) < SAMPLE_DELAY)
      ;

What I find is that, after the call to gethrtime(), the variable
"now" has the same values as the variable "start". resulting in
elapsedSecs always being equal to 0.  If I replace the gethrtime()
version of the code with usleep(), it all works again.

Is there some known interaction between clock_gettime() and gethrtime()
that I might be unaware of?

Thanks.

Ken Ramey
Steward Observatory

-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to