Subject: Re: "esp" driver reorg proposal
To: None <cgd@cs.cmu.edu>
From: Gordon W. Ross <gwr@mc.com>
List: tech-kern
Date: 01/26/1997 00:54:08
> From: "Chris G. Demetriou" <cgd@cs.cmu.edu>
> Date: Sun, 26 Jan 1997 00:36:35 -0500
> 
> > > > The functionality that is provided by the current macros in the header
> > > > files could be provided by function pointers.
> > 
> > They could, yes, but that is not the ONLY way, and I've yet to see
> > any explanation as to why it SHOULD be the only way permitted.
> 
> None of these nail the coffin shut, but:
> 
> (1) enforcement of modularity.  If drivers can't muck with the MI
>     driver's internals, they won't be tempted to.

Bondage and dicipline, eh?

>     Given that the point of making a driver machine-independent
>     is to seperate the 'stuff that the device needs' from the
>     'stuff that the machine/bus/whatever' needs, there should be
>     no _need_ to allow direct manipulation of the MI driver
>     by the MD code.

To me, "the point" (purpose) of the proposed reorganization is to
allow the bulk of the driver source code to be shared.  I am too
practical to demand that it ALL be shared, and I am not interested
in "bondage and dicipline" approaches to software engineering.
I want software that makes it convenient to get the job done.

> (2) avoids proliferation of <machine/xxx.h> files.
> 
>     In my opinion, the things in <machine/*> should have _some_
>     bearing on user software, i.e. included by headers included
>     from user-land or directly from user-land programs.  Obviously
>     that is not true for all headers, but it is true for most of them.

This is a whole different issue.  There are many header files in
arch/*/include that should not be exported to user-land, but that
problem exists only because we do not (yet?) have any separate
place for the kernel-only headers.

>     Saying that each and every MI driver is going to do this
>     (which is what you should do, if you start making this a trend)
>     means that there would be N (where N is potentially the number of
>     MI drivers) extraneous headers in /usr/include/machine.  That
>     seems wasteful and unnecessary to me.

No more wasteful than the N copies of machine-dependent "glue" code
that is necessary with a strictly "binary interface" (no provision
for an MD header to affect the MI code).  In fact, I'll claim that
the amount of replicated code is smaller using the MD header.

> (3) several other MI drivers do it this way (rather than the way you
>     propose), and it's the 'preferred' method (as described by people
>     in 'core' who care, and me 8-).

Existing practice is not always the best practice.

Gordon