Subject: Re: "esp" driver reorg proposal
To: Gordon W. Ross <gwr@mc.com>
From: Chris G. Demetriou <cgd@cs.cmu.edu>
List: tech-kern
Date: 01/26/1997 00:36:35
> > > The functionality that is provided by the current macros in the header
> > > files could be provided by function pointers.
> > 
> > "yes."
> 
> 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.

    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.

(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.

    Why export the headers to user-land if they have no meaning in
    that context?

    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.
   
    (It's worth noting, for those of you out there watching, I do
    intend <machine/bus.h> to be used by user-land programs
    eventually...  8-)

(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-).




cgd