At Mon, 25 May 2009 17:30:19 +0200, Werner Van Belle wrote:
Hello,
This is the third time I tried to get information on the same topic but there has been no response. Since it is crucial for me to get this to work, I really would appreciate your input. If necssary I can provide further documentation. The problem is as follows: if a process which opened a DSP device forks of a new process, then this child will have the same handle towards the DSP. What I now want to do is to release the handle in the child without closing the device for the parent as well. So essentially the sequence below illustrates the problem if one is unable to 'unlink' a dsp device.
a- parent process creates and open dsp device b- parent process forks of a child 1. Child 1 has access to the same dsp device c- parent process closes the DSP device d- client process can no longer write to the DSP device (these are already odd semantics, but okay, can live with it) e- parent process forks of a second child. Child 2 has no dsp device f- Child 2 tries to open the DSP device. This fails because the device, although closed, is not released yet by Child 1.
Is this normal behavior ?
Is there some rigid documentation on the closing and sharing semantics of pcm devices ? Is there a way to unlink a device without closing it ?
Unlikely.
If this is the wrong mailinglist, then who should I contact regarding these erratic semantics ?
Which API are you using? A simple test case code would be more helpful to demonstrate.
But, in general, sharing the same DSP device among different processes don't sound like a good idea...
Takashi