Subject: Re: Port independent cdevsw[]
To: Chris G. Demetriou <cgd@sibyte.com>
From: Todd Vierling <tv@wasabisystems.com>
List: tech-kern
Date: 10/15/2000 21:00:23
On 15 Oct 2000, Chris G. Demetriou wrote:

: You need to transform the device numbers from the old values to the
: new values (if any).  Otherwise, you get into the situation where you
: may have incorrect device aliases.

One possibility here is to permit multiple device major numbers to point to
the same physical device.  The `historic' number, arch-specific, can point
to device X, but you'll also find it in the MI table at a fixed number.  
MAKEDEV would then need a minor update to generate only the MI numbered
nodes.

Along with this, you could also have the `historic' pointers drop out with a
COMPAT_DEVSW or similar kernel option.  Not that it would reduce kernel size
much if at all (since there's still a need for MD drivers), but it can
easily test if someone forgot to use the new nodes.

: also, if you're going to renumber and transform device numbers, you
: should adjust maxpartitions so they're uniform and "at least 16"
: probably 32.

mmmmmm.

: (1) you need good mechanism to add majors at run-time for
:     loadable drivers.  The "lkm dummy" garbage is simply
:     not sufficient, as far as i'm concerned.  Given that,
:     you should be able to use it for 'normal' devices too.
: 
: (2) you can actually use the same mechanism for loaded drivers as
:     normal ones, making conversion to loadable drivers slightly easier
:     -- there's a lot of other stuff to be done.

Note that for (1) and (2) to work together, there still needs to be a
separation of dynamically loaded numbers versus fixed-assignment numbers so
that the latter group can grow without clobbering the former.  The loadable
driver numbers may be the only numbers that a DEVFS type filesystem would
use, but there's multiple good arguments for a fixed set as well.

You could have two dynamic tables, chosen by the top bit of the major
number; if the top bit is set, it's a dynamically loaded device.

(Implementation note:  The places where checking the [bc]devsw table are not
performance critical.  If we indirect to two or three tables based on
historic vs. MI-fixed vs. dynamic, the impact should be negligible.)

-- 
-- Todd Vierling <tv@wasabisystems.com>  *  http://www.wasabisystems.com/
-- Speed, stability, security, and support.  Wasabi NetBSD:  Run with it.