Subject: Re: Time to fix a 25 year old misdesign
To: NetBSD Kernel Technical Discussion List <tech-kern@NetBSD.ORG>
From: Lennart Augustsson <lennart@augustsson.net>
List: tech-kern
Date: 10/15/2000 17:47:22
"Greg A. Woods" wrote:

> [ On Sunday, October 15, 2000 at 12:12:28 (+0200), Lennart Augustsson wrote: ]
> > Subject: Time to fix a 25 year old misdesign
> >
> >  But the audio device can actually be viewed as two
> > devices: one for playback and one for recording.
>
> Exactly.  You're proposing to fix the wrong problem.

Well, sometimes you want to view it that way, but sometimes you just want
to view it as a single device.  And that goes even more for USB ugen devices.


> The Unix design is still right.  The dev_close() routine must be called
> only once because its sole purpose is to perform device specific actions
> on the hardware that will shut down the hardware properly when there are
> no other descriptors open to the device.

I claim that the design is wrong regardless of how you view it.  The reason is
the lack of symmetry.  There should be a match between open() and close().
If you also claim that dev_open() should be called only once because
it performs initialization that only needs to be done when the device is first
opened, then I'd buy your argument.



> The design of the audio driver is what's wrong.  It must be separated
> logically into different drivers that have unique functionality and once
> that's done there'll be no need to call dev_close() more than once (and
> indeed there'll be more reasons to only call it once!).

Well, I don't think we have the option of changing that.  There's too much
software out there that expects the current design.  So you just suggest
replacing one problem with a worse problem.  :)



--

        -- Lennart