[alsa-devel] [PATCH][RFC] alsa-lib: heavy pcm atomics cleanup

Takashi Iwai tiwai at suse.de
Tue Feb 11 13:49:11 CET 2014

At Fri,  7 Feb 2014 15:38:58 +0200,
riku.voipio at linaro.org wrote:
> From: Riku Voipio <riku.voipio at linaro.org>
> The following patch comes from the realization that at least ARM code
> for atomics is quite broken and nobody has cared for a decade.
> A quick dive shows that only snd_atomic_{read,write}_{begin,end}
> appear to be used widely. These are implemented using wmb/rmb.
> Only other use of atomic functions is in pcm_meter.c.
> The #SND_PCM_TYPE_METER plugin type appears rarely, if ever, used.
> I presume these days anyone who wants a meter/scope will do in pulseaudio
> layer instead of alsa.
> It would seem better fit to have pcm_meter in alsa-plugins instead 
> of alsa-lib, but I guess that would be an ABI break...
> So instead, I'm proposing here
> 1. Removal of all hand-crafted atomics from iatomic.h apart from barriers,
>    which are used in snd_atomic_{read,write}_{begin,end}.
> 2. Using __sync_synchronize as the default fallback for barriers. This
>    has been available since gcc 4.1, so it shouldn't be a problem.
> 3. Defining the few atomics used by pcm_meter.c withing pcm_meter.c
>    itself, using gcc atomic builtins[1].
> 4. Since gcc atomic builtins are available only since gcc 4.7, add a check for
>    that in gcc configure.in, and don't build pcm meter plugin if using
>    older gcc.
> The last point has the impact, that if there actually is someone who 1) 
> uses the meter plugin 2) wants to upgrade to 2014 alsa-lib 3) but
> does not want to use a 2012+ gcc - that someone will be inconvenienced.
> Finally remove the unneeded configure check for cpu type. We can
> trust the gcc to set right flags for us.
> [1] http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
> Signed-off-by: Riku Voipio <riku.voipio at linaro.org>

This looks like a good cleanup.
I applied it now.



More information about the Alsa-devel mailing list