The Advanced Linux Sound Architecture (ALSA) - library
Find a file
Takashi Iwai c9a0d7d601 conf: Add thread-safe global tree reference
Most of open functions in alsa-lib have the call pattern:
  snd_config_update();
  return snd_xxx_open(x, snd_config, ...);

This means that the toplevel config gets updated, and passed to a
local open function.  Although snd_config_update() itself has a
pthread mutex to be thread safe, the whole procedure above isn't
thread safe.  Namely, the global snd_config tree may be deleted and
recreated at any time while the open function is being processed.
This may lead to a data corruption and crash of the program.

For avoiding the corruption, this patch introduces a refcount to
config tree object.  A few new helper functions are introduced as
well:
- snd_config_update_ref() does update and take the refcount of the
  toplevel tree.   The obtained config tree has to be freed via
  snd_config_unref() below.
- snd_config_ref() and snd_config_unref() manage the refcount of the
  config object.  The latter eventually deletes the object when all
  references are gone.

Along with these additions, the caller of snd_config_update() and
snd_config global tree in alsa-lib are replaced with the new helpers.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2016-05-17 15:51:20 +02:00
alsalisp autotools: update style 2014-02-26 08:16:22 +01:00
aserver coverity fixes 2016-01-12 16:26:58 +01:00
doc topology: doxygen: Add doxygen support for topology core. 2015-07-30 17:10:18 +02:00
include conf: Add thread-safe global tree reference 2016-05-17 15:51:20 +02:00
m4 Add the attributes.m4 macro file from xine/lscube. 2008-11-21 13:04:19 +01:00
modules sbase: fixed missing free 2014-09-23 09:04:26 +02:00
src conf: Add thread-safe global tree reference 2016-05-17 15:51:20 +02:00
test test: audio_time: show report validity and accuracy 2015-07-02 17:02:05 +02:00
utils autotools: update style 2014-02-26 08:16:22 +01:00
.gitignore Add src/conf/topology/sklrt286/data/pvt_data to .gitignore 2016-04-28 16:16:08 +02:00
acinclude.m4 fixed for the recent autoconf. 2004-01-26 15:52:17 +00:00
ChangeLog * update to libtool 1.3.3 1999-07-22 12:18:42 +00:00
configure.ac conf/ucm: ROCKCHIP-I2S: add Rockchip I2S UCM config. 2016-05-09 14:58:42 +02:00
COPYING Updated GNU GPL license (address). 2001-12-30 09:22:54 +00:00
gitcompile Introduce --with-pkgconfdir, add 64-bit defaults to gitcompile 2012-01-20 16:14:44 +01:00
INSTALL doc: fix cross-compiling example 2014-08-25 14:12:38 +02:00
Makefile.am autotools: update style 2014-02-26 08:16:22 +01:00
MEMORY-LEAK Initial version 2003-02-04 14:56:07 +00:00
NOTES Change assert condition in error message handler 2007-10-24 12:53:08 +02:00
TODO Added snd_config_load_override(). 2002-01-09 21:28:15 +00:00