Lange Norbert <norbert.la...@andritz.com> writes: > this seems identical to an issue I have. I wanted to start a > millisecond tick, aligned to seconds, but used the POSIX > timerfd_settime. Under Linux this works as intendent, under cobalt it > doesn't. > > I expect that the first timeout would be somewhat close to the call, > on a "whole" millisecond. > > What happens is that the timer-function convert the (Nano-)seconds to > the internal resolution. This has a small error, which normally won't > matter for short timespans. The problem here is, that the absolute > time will get converted with a big (absolute) error - growing bigger > the longer your system is up. > > What you could do, is reading the current time and fixing it up to a > whole tick close to it, name this prev_secondtime, then use this as > initial value. Now the driver will have to fixup nothing or only a > small amount, keeping the error low.
It seems like a different problem to me, because I'm working in relative mode, so such rounding shouldn't have a chance to get very large. Also, I have a hardware timer that allows me to kick off much more often than the system tick. Once the timer starts, it fires quite accurately as often as every 10 microseconds. _______________________________________________ Xenomai mailing list Xenomai@xenomai.org https://xenomai.org/mailman/listinfo/xenomai