aboutsummaryrefslogtreecommitdiffstats
path: root/common/atomic.c
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2014-06-10 05:30:02 +0200
committerSven Gothel <[email protected]>2014-06-10 05:30:02 +0200
commitf95bf4457fbc31112fa82dacbc1b7e094b9fd1cf (patch)
tree965ba5b8e6fc8e6bfe7a981c1dfb1179bb9adcde /common/atomic.c
parent7297c3214a4c648aaee81a9877da15b88f798197 (diff)
parentc07fb7b45c1e345dbaa439882250de5b2213026f (diff)
Merge branch 'UPSTREAM' into UPSTREAM_MERGE
Diffstat (limited to 'common/atomic.c')
-rw-r--r--common/atomic.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/common/atomic.c b/common/atomic.c
new file mode 100644
index 00000000..634587e4
--- /dev/null
+++ b/common/atomic.c
@@ -0,0 +1,16 @@
+
+#include "config.h"
+
+#include "atomic.h"
+
+
+extern inline void InitRef(volatile RefCount *ptr, uint value);
+extern inline uint ReadRef(volatile RefCount *ptr);
+extern inline uint IncrementRef(volatile RefCount *ptr);
+extern inline uint DecrementRef(volatile RefCount *ptr);
+extern inline uint ExchangeRef(volatile RefCount *ptr, uint newval);
+extern inline uint CompExchangeRef(volatile RefCount *ptr, uint oldval, uint newval);
+extern inline int ExchangeInt(volatile int *ptr, int newval);
+extern inline void *ExchangePtr(XchgPtr *ptr, void *newval);
+extern inline int CompExchangeInt(volatile int *ptr, int oldval, int newval);
+extern inline void *CompExchangePtr(XchgPtr *ptr, void *oldval, void *newval);