Subject: Re: dev/audiobell.c proposal
To: None <tech-kern@NetBSD.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-kern
Date: 01/15/2004 17:56:40
>>> FreeBSD has a flag in the devsw structure to allow the close
>>> function to be called at each close call on the device.
>> Probably, but would it do what you want? It's entirely possible to
>> have multiple closes for a single open; consider a process that
>> forks.
> It means that the device is very likely to keep state through the
> struct proc pointer it gets in the functions (and indeed, that's
> precisely what NVidia does).
What do they do if a process forks? (How does the driver hear about
it, to duplicate that state?)
What do they do about multiple cards open in a single process? What
about multiple opens of a single card?
> Most devices [...], but it would make sense for an audio device to
> keep per process state.
Would it? What about forking processes? What about file descriptors
passed thorugh sockets? What about processes with multiple opens on a
single device? What about processes with multiple devices open?
The more I hear about this the more it sounds like cloning devices,
only done wrong.
> If we'd go on the in-kernel mixer road, each feeder would have its
> own rate, gain and such. The device would have to keep track of all
> of this, even though there would be only one audio device behind.
Certainly...but I still think it'd be better to do it with
new-minor-on-open semantics, which is what I think (correctly or
incorrectly) cloning devices basically are.
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse@rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B