aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-09-05 00:37:17 -0700
committerEric Wong <normalperson@yhbt.net>2008-09-05 00:37:17 -0700
commit9ff024638620a6b2ba9cdd77e7d7db68516ecdac (patch)
tree286d8108de83b5f5e2954128baf1c210356593e0
parent117ed71c73b643cccfaf57d3b480c158c190f4e0 (diff)
downloadmpd-9ff024638620a6b2ba9cdd77e7d7db68516ecdac.tar.gz
mpd-9ff024638620a6b2ba9cdd77e7d7db68516ecdac.tar.xz
mpd-9ff024638620a6b2ba9cdd77e7d7db68516ecdac.zip
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.
-rw-r--r--src/audio_format.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/audio_format.h b/src/audio_format.h
index a6e97e046..ade9d8810 100644
--- a/src/audio_format.h
+++ b/src/audio_format.h
@@ -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)