At Wed, 05 Jun 2013 23:25:15 -0700, Patrick Lai wrote:
- << Jaroslav >>
On 6/5/2013 2:17 AM, Clemens Ladisch wrote:
gsantosh@codeaurora.org wrote:
- HAL issues pause in parallel to the write
This is illegal. http://www.alsa-project.org/main/index.php/SMP_Design says: | The use of returned handles [such as snd_pcm_t*] must be serialized in | the application using own locking scheme.
If you want to issue a pause while waiting for data to be written, use non-blocking writes.
Based on my understanding of SMP_Design and response above, pause and write to same PCM device are expected to be serialized. However, my interpretation of following patch is that pause and stop are expected to wakes up process waiting in pcm_lib.c wait_for_avail(). It seems to give me the indication that multiple threads acting on same PCM device is expected.
ALSA: pcm_core: Fix wake_up() optimization
This change fixes the "ALSA: pcm_lib - optimize wake_up() calls for PCM I/O" commit. New sleeping queue is introduced to separate user space and kernel space wake_ups. runtime->nowake is renamed to twake (transfer wake).
Jaroslav: Can you share your thought as you are author of this patch?
I don't understand what's the problem in this thread...
The behavior of PAUSED stream in wait_for_avail() is clear. If it's woken up by some events, it simply goes to sleep again without exiting the loop.
Takashi