alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* Locking/mutex for snd_pcm_update_hw_ptr0() call
@ 2016-11-07 12:53 Alan Young
  2016-11-07 14:15 ` Clemens Ladisch
  0 siblings, 1 reply; 4+ messages in thread
From: Alan Young @ 2016-11-07 12:53 UTC (permalink / raw)
  To: alsa-devel

As far as I can see, snd_pcm_update_hw_ptr0() is a critical section of 
code that is protected by some form of mutex in all its call paths:

     snd_pcm_period_elapsed() - snd_pcm_stream_lock_irqsave()

     snd_pcm_update_hw_ptr()

         snd_pcm_lib_ioctl_reset() - snd_pcm_stream_lock_irqsave()

         snd_pcm_lib_write1() - snd_pcm_stream_lock_irq()

         snd_pcm_lib_read1() - snd_pcm_stream_lock_irq()

         snd_pcm_status() - snd_pcm_stream_lock_irq()

         snd_pcm_do_pause - I think via the locking in snd_pcm_action()

         snd_pcm_playback_rewind() - snd_pcm_stream_lock_irq()

         snd_pcm_capture_rewind() - snd_pcm_stream_lock_irq()

         snd_pcm_playback_forward() - snd_pcm_stream_lock_irq()

         snd_pcm_capture_forward() - snd_pcm_stream_lock_irq()

         snd_pcm_hwsync() - snd_pcm_stream_lock_irq()

         snd_pcm_delay() - snd_pcm_stream_lock_irq()



However, I am not familiar with how kernel locking mechanisms work. It 
is possible that the DMA interrupt handler (snd_pcm_period_elapsed()), 
could call snd_pcm_update_hw_ptr0() while it is part way through a call 
from snd_pcm_status(), or vice versa?

Alan.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-07 15:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-07 12:53 Locking/mutex for snd_pcm_update_hw_ptr0() call Alan Young
2016-11-07 14:15 ` Clemens Ladisch
2016-11-07 14:56   ` Alan Young
2016-11-07 15:40     ` Clemens Ladisch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).