Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Nov 1995 04:35:12 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, wollman@lcs.mit.edu
Cc:        current@FreeBSD.org
Subject:   Re: Time problems
Message-ID:  <199511031735.EAA15564@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> You may have to wait for kernel changes (or write them :-) to use the
>> Pentium clock unless it is very close to an integral number of MHz.
>> Another problem with using it is that it breaks tickadj(8).
>> cpu_thisticklen() ignores the default value of `tick', so tickadj
>> can't be used to compensate for large errors in `pentium_mhz'.

>I do not see that this is the case.  From kern/kern_clock.c:

>                if (timedelta == 0) {
>                        time_update = CPU_THISTICKLEN(tick);
>                } else {
>                        time_update = CPU_THISTICKLEN(tick) + tickdelta;
>                        timedelta -= tickdelta;
>                }

Asumme for simplicity that timedelta is fixed at 0.  Then `tickadj -t
9999' changes time_update in the above from 10000 to 9999 on non-Pentium
systems but has no effect on Pentium systems.  tickadj would have to
hack on (a higher precision version of) pentium_mhz to achieve the same
effect on Pentium systems.  This is similar to the problem with jitter
in the non-Pentium microtime() that I mentioned previously.  Both
tickadj and adjtimeofday() adjust secondary variables but have no
effect on the primary clock frequency.  The scaling factor of
(1e6 / primary_clock_freqency) needs to be scaled by a factor of
(tick + tickdelta) /  (100000 / hz).

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511031735.EAA15564>