[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.
Thanks!
Takashi
More information about the Alsa-devel
mailing list