summaryrefslogtreecommitdiff
path: root/compiler.h
diff options
context:
space:
mode:
authorGary E. Miller <gem@rellim.com>2015-03-08 19:21:19 -0700
committerGary E. Miller <gem@rellim.com>2015-03-08 19:23:03 -0700
commit7420e763390412bad49f7d6eba85bb7e51963974 (patch)
tree76ae27ac427722caa3204129f2969ef3d3421574 /compiler.h
parent603f875e5628001e8d94fd2c078dbd9e6ff8e16f (diff)
downloadgpsd-7420e763390412bad49f7d6eba85bb7e51963974.tar.gz
OS X, add OSMemoryBarrier() for memory_barrier() portability.
Builds fine, untested.
Diffstat (limited to 'compiler.h')
-rw-r--r--compiler.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler.h b/compiler.h
index b6919aaa..bca4c9e2 100644
--- a/compiler.h
+++ b/compiler.h
@@ -54,12 +54,18 @@ typedef unsigned int speed_t;
#endif /* HAVE_STDATOMIC_H */
#endif /* S_SPLINT_S */
+#ifdef HAVE_OSATOMIC_H
+#include <libkern/OSAtomic.h>
+#endif /* HAVE_STDATOMIC_H */
+
static /*@unused@*/ inline void memory_barrier(void)
/* prevent instruction reordering across any call to this function */
{
#ifndef S_SPLINT_S
#ifdef STD_ATOMIC_H
atomic_thread_fence(memory_order_seq_cst);
+#elif defined(HAVE_OSATOMIC_H)
+ OSMemoryBarrier();
#elif defined(__GNUC__)
asm volatile ("" : : : "memory");
#endif /* STD_ATOMIC_H */