audio_format: volatile removal

volatile provides absolutely no guarantee thread-safety in SMP
environments.  volatile was designed to access memory locations
in peripheral hardware directly; not for SMP.  If volatile is
needed to work properly on SMP, then it is only hiding subtle
bugs.

volatile only prevents the /compiler/ from making optimizations
when accessing variables.  CPUs do their own optimizations at
runtime so it cannot guarantee registers of CPUs are flushed
to memory cache-coherent access on different CPUs.

Furthermore, the thread-communication via condition variables
between threads sharing audio formats already results in memory
barriers.
This commit is contained in:
Eric Wong 2008-09-07 19:14:50 +02:00 committed by Max Kellermann
parent a5f68b3cfc
commit 18fc10a926

View File

@ -22,9 +22,9 @@
#include "mpd_types.h"
typedef struct _AudioFormat {
volatile mpd_sint8 channels;
volatile mpd_uint32 sampleRate;
volatile mpd_sint8 bits;
mpd_sint8 channels;
mpd_uint32 sampleRate;
mpd_sint8 bits;
} AudioFormat;
static inline double audio_format_time_to_size(const AudioFormat * af)