Date: Tue, 5 Feb 2002 11:58:48 -0800 (PST) From: John Polstra <jdp@polstra.com> To: hackers@freebsd.org Cc: phk@critter.freebsd.dk Subject: Re: A question about timecounters Message-ID: <200202051958.g15JwmV04331@vashon.polstra.com> In-Reply-To: <92661.1012938731@critter.freebsd.dk> References: <92661.1012938731@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
In article <92661.1012938731@critter.freebsd.dk>,
Poul-Henning Kamp <phk@critter.freebsd.dk> wrote:
> In message <200202051944.g15JiFw04286@vashon.polstra.com>, John Polstra writes:
> >I don't follow that. As I read the code, the "current" timecounter
> >is only advanced every second -- not every 1/HZ seconds. Why should
> >more of them be needed when HZ is large?
>
> No, only if you have set tco_method to one, if tco_method is zero (default)
> we update the timecounter every HZ.
Oh, you're right. Sorry, I misread the code. My tco_method is 0,
so it will do the update every HZ.
> Could you try this combination:
>
> NTIMECOUNTER = HZ (or even 5 * HZ)
> tco_method = 0
> no splhigh protection for microuptime() ?
Yep, I'll try that.
> If I do
> extern volatile struct timecounter *timecounter;
>
> microtime()
> {
> struct timecounter *tc;
>
> tc = timecounter;
>
> The compiler complains about loosing the volatile thing.
>
> How do I tell it that it is the contents of the "timecounter" pointer which
> is volatile, but now what it points at ?
You want:
extern struct timecounter *volatile timecounter;
and also change the definition of the variable in the .c file. You
won't get any warnings from that.
John
--
John Polstra
John D. Polstra & Co., Inc. Seattle, Washington USA
"Disappointment is a good sign of basic intelligence." -- Chögyam Trungpa
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202051958.g15JwmV04331>
