Re: [PATCH] ALSA: firewire-lib: permit to flush queued packets only in process context for better PCM period granularity

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 11 May 2016 19:17:39 +0200,
Takashi Sakamoto wrote:
> 
> These three commits were merged to improve PCM pointer granularity.
> commit 76fb87894828 ("ALSA: firewire-lib: taskletize the snd_pcm_period_elapsed() call")
> commit e9148dddc3c7 ("ALSA: firewire-lib: flush completed packets when reading PCM position")
> commit 92b862c7d685 ("ALSA: firewire-lib: optimize packet flushing")
> 
> The point of them is to handle queued packets not only in software IRQ
> context of IR/IT contexts, but also in process context. As a result of
> handling packets, period tasklet is scheduled when acrossing PCM period
> boundary. This is to prevent recursive call of
> 'struct snd_pcm_ops.pointer()' in the same context.
> 
> When the pointer callback is executed in the process context, it's
> better to avoid the second callback in the software IRQ context. The
> software IRQ context runs immediately after scheduled in the process
> context because few packets are queued yet.
> 
> For the aim, 'pointer_flush' is used, however it causes a race condition
> between the process context and software IRQ context of IR/IT contexts.
> 
> Practically, this race is not so critical because it influences process
> context to skip flushing queued packet and to get worse granularity of
> PCM pointer. The race condition is quite rare but it should be improved
> for stable service.
> 
> The similar effect can be achieved by using 'in_interrupt()' macro. This
> commit obsoletes 'pointer_flush' with it.
> 
> Acked-by: Clemens Ladisch <clemens@xxxxxxxxxx>
> Signed-off-by: Takashi Sakamoto <o-takashi@xxxxxxxxxxxxx>

Applied, thanks.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux