Subject: Re: More Device Properties
To: None <cgd@sibyte.com, eeh@netbsd.org>
From: None <eeh@netbsd.org>
List: tech-kern
Date: 02/22/2001 18:36:59
There are four goals at hand here:
(1) backward compatibility of drivers while converting to the new
interface. I think that this is obvious; drivers won't need to be
converted all at once (but they will have to wait to have their busses
converted).
(2) seamless transition, i.e. busses and/or can be converted without
massive breakage, and without massive rototilling of the source tree.
This follows as well. The only possibility is for the Sbus case
you've described, and it can be handled as well: Convert one MD bus
driver. Later, convert the next. Later, convert the next. _Then_
start converting drivers. If you're in a rush to convert drivers,
well, then it's on you to convert the busses in a way that works. But
you can get a seamless transition.
(3) desire for the 'new interface' used by converted drivers to get
rid of aux entirely. My way of doing conversion manages this, yours
does not.
(4) desire that when the interface is completely converted, more
rototilling of source code isn't necessary for the conversion to be
finished. It may be possible to do this with your method, but it's
much harder to _verify_ than with mine.
So, regarding the statement you made above:
(1) The claim you make is false; the opposite is true, bus drivers
tend to be MI and device drivers tend to be MI and MD. Sbus is an
exception.
(2) Despite that, with my suggested method for conversion, you can
meet all of the goals outlined above. You just have to convert all of
the MD busses before you can start converting MI drivers. That's not
a big deal.
(3) Given the points above, and the fact that my proposal for
conversion actually _satisfies_ all of things that I can think of as
reasonable goals for the conversion, yes, in fact, I do think my
method would be quite acceptable.
No, your proposal calls for a transitional interface
for bus drivers, which means that they will require
conversion twice: once to the transitional interface
that provides both `aux' and properties and then another
conversion to remove `aux' and migrate to the final
interface.
My proposal only required a single transition, although
it did leave some unused remnants of the original interface
visible.
I do not beleive this can be done as a one-step process
that does not leave some remnants of `aux' around without
causing major disruptions. However, the level of acceptable
breakage during this transition is a policy rather than
an engineering issue.
Eduardo