radioInterface: Atomically fetch and change underrun variable

Otherwise, it could happen that underrun events are lost:
TxLower (isUnderrun):	RxLower (pullBuffer):
read(underrun)
			read(underrun)
			write(underrun, |val) [maybe underrun becomes TRUE]
write(underrun, false)

Similary, it could happen the other direction if atomic was only applied
to isUnderrun:
TxLower (isUnderrun):	RxLower (pullBuffer):
			read(underrun) -> true
read(underrun)-> true
write(underrun, false)
			write(underrun, true|val) where val=false

So in here isUnderrun would return true twice while it should only
return one.

Change-Id: I684e0a5d2a9583a161d5a6593559b3a9e7cd57e3
diff --git a/CommonLibs/Threads.cpp b/CommonLibs/Threads.cpp
index dd57d40..020d94e 100644
--- a/CommonLibs/Threads.cpp
+++ b/CommonLibs/Threads.cpp
@@ -40,7 +40,9 @@
 
 using namespace std;
 
-
+#ifndef HAVE_ATOMIC_OPS
+	pthread_mutex_t atomic_ops_mutex = PTHREAD_MUTEX_INITIALIZER;
+#endif
 
 
 Mutex gStreamLock;		///< Global lock to control access to cout and cerr.