Date: Sun, 8 Nov 1998 21:05:41 +1100 From: Bruce Evans <bde@zeta.org.au> To: bde@zeta.org.au, phk@critter.freebsd.dk Cc: current@FreeBSD.ORG, wpaul@skynet.ctr.columbia.edu Subject: Re: Grrr... calcru: negative time blah blah blah Message-ID: <199811081005.VAA24481@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>>Timecounter strangeness seems to be only a symptom here. I've seen
>>similar strangeness caused by ddb masking interrupts. However,
>>{micro|nano}[run]time() only have obvious problems when tco_delta()
>>overflows a u_int. Overflow occurs after only about 10 seconds for
>>a 400MHz tsc timecounter, but not for one hour for an i8254 timecounter.
>
>Uhm, it happens earlier for a i8254, in fact it happens whenever more
>than one interrupt is lost. The majority of the bits are software
>bits.
That's neither (C) overflow nor in {micro|nano}[run]time(). When the
low-level i8254 timecounter is not called often enough, the timecounter
just drops some multiple of timer0_max_count (about 11932) timecounter
ticks. This doesn't necessarily happen when more than one interrupt
is lost -- it happens when the low-level timecounter is not called for
more than (2 - epsilon) interrupt periods. There must have been some
low-level timecounter calls for the observed timecounter deltas to be
more than (2 * timer0_max_count).
Bruce
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811081005.VAA24481>
