|
|
|
@ -38,12 +38,12 @@ extern void pg_spinlock_barrier(void); |
|
|
|
|
#ifndef pg_compiler_barrier_impl |
|
|
|
|
/*
|
|
|
|
|
* If the compiler/arch combination does not provide compiler barriers, |
|
|
|
|
* provide a fallback. That fallback simply consists out of a function call |
|
|
|
|
* into a externally defined function. That should guarantee compiler barrier |
|
|
|
|
* provide a fallback. The fallback simply consists of a function call into |
|
|
|
|
* an externally defined function. That should guarantee compiler barrier |
|
|
|
|
* semantics except for compilers that do inter translation unit/global |
|
|
|
|
* optimization - those better provide an actual compiler barrier. |
|
|
|
|
* |
|
|
|
|
* Using a native compiler barrier for sure is a lot faster than this... |
|
|
|
|
* A native compiler barrier for sure is a lot faster than this... |
|
|
|
|
*/ |
|
|
|
|
#define PG_HAVE_COMPILER_BARRIER_EMULATION |
|
|
|
|
extern void pg_extern_compiler_barrier(void); |
|
|
|
@ -52,7 +52,7 @@ extern void pg_extern_compiler_barrier(void); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* If we have atomics implementation for this platform fall back to providing |
|
|
|
|
* If we have atomics implementation for this platform, fall back to providing |
|
|
|
|
* the atomics API using a spinlock to protect the internal state. Possibly |
|
|
|
|
* the spinlock implementation uses semaphores internally... |
|
|
|
|
* |
|
|
|
|