Subject: Re: detaching timecounters (patch)
To: None <tech-kern@netbsd.org>
From: Chris Gilbert <chris@dokein.co.uk>
List: tech-kern
Date: 12/31/2007 13:54:12
David Young wrote:
> I'm writing a device detachment routine for geodecntr(4), which provides
> a timecounter. I've come up with the attached routine for detaching
> a timecounter. Is it ok?
>
> Dave
>
>
Note I'm not an expert on timecounters, I'm just looking over the code
and your patch :)
I think there's a corner case where the timecounter being set as the
current timecounter isn't "good enough". Looking at tc_init there's a
bunch of requirements for a counter to be "good enough" and if it's not
timecounter isn't changed and continues to use the default
dummy_timecounter till one is good enough. For detach the code should
proably do the same thing, IE if this is the only tc that was "good
enough" then it should fallback to dummy_timecounter.
The fix looks easy enough, just default best to dummy_timecounter and
make sure that negative qualities are ignored, eg:
for (best = &dummy_timecounter, tc = timecounters; tc != NULL; tc = tc->tc_next) {
if (tc->tc_quality < 0)
continue;
else if (tc->tc_quality > best->tc_quality)
best = tc;
else if (tc->tc_quality < best->tc_quality)
continue;
else if (tc->tc_frequency > best->tc_frequency)
best = tc;
}
Thanks,
Chris