On Thu, 12 Apr 2018, Graeme Geldenhuys wrote:
On 2018-04-11 17:44, R0b0t1 wrote:
This is related to something I meant to propose a while ago related to
a cross platform timing and alarm API.
That already exists in the form of EpikTimer
(https://github.com/graemeg/epiktimer). That is the latest
implementation with the permission of the original author.
Ah, finally !
I was waiting for epiktimer to pop up in the discussion...
Thank you, Graeme :-)
It uses the highest resolution timer it can find on each platform, and
GetTickCount/GetTickCount64 as a fall-back
No, it doesn't. I just checked.
It uses clock_gettime if available on linux, otherwise it uses gettimeofday.
Maybe it used it at one point, but changed to a custom implementation to be
able to switch to clock_time ahead of FPC.
Also, it uses a cardinal in the linux version, so it will also have the
wrap-around problem:
// Build a 64 bit microsecond tick from the seconds and microsecond longints
Result := (TickType(t.tv_sec) * NanoPerMilli) + t.tv_usec;
"Build a 64-bit microsecond tick" when result is a Cardinal ?
I don't think that can be right...
Note that TickType is a int64 (line 90 of the unit).
So, no use of systutils gettickcount, and a wrong implementation to boot...
I suggest fixing at least the bug.
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal