Subject: Re: Timekeeping in NetBSD -or- getting ready to split the microsecond
To: Frank Kardel <kardel@acm.org>
From: Simon Burge <simonb@wasabisystems.com>
List: tech-kern
Date: 11/01/2005 23:19:17
Hi Frank,

Frank Kardel wrote:

> Simon Burge wrote:
> 
> >On Tue, Oct 25, 2005 at 02:16:37AM +0200, Frank Kardel wrote:
> >
> >>Please feel free to look at the patch (consider it "newer as current" 
> >>8-) and give me
> >>feedback about the time counter port.
> >
> >Good to have another reference, and one that certainly looks further
> >along in some (probably many) areas.
> >
> Maybe we can compare the two trees and pick the better parts of both.

That sounds good.

I've merged some of my diff with some of yours and have the following
that still runs here.

My diff is at
ftp://ftp.NetBSD.org/pub/NetBSD/misc/simonb/timecounters-20051027.diff

The key difference is that I don't really have support for both the
old and the new ways of doing things, although I've taken some of your
support for this.  I also haven't added any Geode support so far,
although that will all drop in beside that diff without any problems.  I
think the Geode support should however live in arch/i386/pci/geodecntr.c
as it's i386 specific, and we have some other existing Geode support in
arch/i386/pci.

I've still got lots of XXX comments to deal with.  How does it sound to
iterate over this again, and then we'll form the branch based on the
merging of our diffs?

I think at this stage we either don't want to support both timecounters
and non-timecounters, or we want to support then within the same
file.  I don't think it will be that difficult to cut over all ports to
timekeepers on a branch, but getting all ports physically tested might
be a different story.

As to why I'd want to see timecounter support in the same file as old
timer support, take kern/kern_clock_tc.c as an example.  I don't think
we want both a kern_clock.c and a kern_clock_tc.c, as the former will
disappear soon, and I don't think we want to keep the _tc suffix on
kern_clock_tc.c after the original kern_clock.c disappears.  I also
don't want to we want to develop on kern_clock_tc.c then rename that to
kern_clock.c at some later stage either as we then miss any CVS history
(or at least make it harder to use by having to refer to two different
files).  Perhaps just having kern_clock.c say

	#ifdef TIMECOUNTERS
	   /* new code */
	#else /* !TIMECOUNTERS */
	   /* old code */
	#endif

is a possible compromise?

Simon.
--
Simon Burge                            <simonb@wasabisystems.com>
NetBSD Support and Service:         http://www.wasabisystems.com/