[Mono-list] Environment.TickCount not as documented by MS (was: A mono bug)?

Iain McCoy iain@mccoy.id.au
Thu, 19 Feb 2004 14:10:35 +1100

On Thu, 2004-02-19 at 02:16, Lawrence Oluyede wrote:
> I've written a simple script to compute the uptime of the machine.
> It works well on MS.NET on Win2k (i tried to compare the output with 
> some other similar utilities) but on Mono 0.29 on my Gentoo box it fails 
> (the procps uptime tells me another time instead of the one that i get 
> with my uptime). Maybe I'm wrong or maybe Mono is wrong... anyway I 
> can't install Mono 0.30 cause it doesn't compile on Gentoo and on 
> Windows it doesn't run :(
It seems that for Environment.TickCount mono returns basically the same
thing as it returns for DateTime.Ticks.

Environment.TickCount's icall looks like this:
        res = (gint32) gettimeofday (&tv, &tz);
        if (res != -1)
                res = (gint32) ((tv.tv_sec & 0xFFFFF) * 1000 +
(tv.tv_usec / 1000));
        return res;

while the DateTime_GetNow icall does this:
        if (gettimeofday (&tv, NULL) == 0) {
                res = (((gint64)tv.tv_sec + EPOCH_ADJUST)* 1000000 +
                return res;

These are rather more similar than makes sense, in any case.

Anyway, Environment.TickCount is documented by MS (at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemEnvironmentClassTickCountTopic.asp) as "containing the amount of time in milliseconds that has passed since the last time the computer was started". I think mono's implementation should probably do something similar, although I'm not yet sure what the correct way to do that something similar would be.
Iain McCoy <iain@mccoy.id.au>