summaryrefslogtreecommitdiff
path: root/src/atomic.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/atomic.hpp')
-rw-r--r--src/atomic.hpp62
1 files changed, 31 insertions, 31 deletions
diff --git a/src/atomic.hpp b/src/atomic.hpp
index e24b719..e581593 100644
--- a/src/atomic.hpp
+++ b/src/atomic.hpp
@@ -17,24 +17,24 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __ZS_ATOMIC_HPP_INCLUDED__
-#define __ZS_ATOMIC_HPP_INCLUDED__
+#ifndef __ZMQ_ATOMIC_HPP_INCLUDED__
+#define __ZMQ_ATOMIC_HPP_INCLUDED__
#include "stdint.hpp"
-#if defined ZS_FORCE_MUTEXES
-#define ZS_ATOMIC_MUTEX
+#if defined ZMQ_FORCE_MUTEXES
+#define ZMQ_ATOMIC_MUTEX
#elif (defined __i386__ || defined __x86_64__) && defined __GNUC__
-#define ZS_ATOMIC_X86
+#define ZMQ_ATOMIC_X86
#elif defined ZMQ_HAVE_WINDOWS
-#define ZS_ATOMIC_WINDOWS
+#define ZMQ_ATOMIC_WINDOWS
#elif defined ZMQ_HAVE_SOLARIS
-#define ZS_ATOMIC_SOLARIS
+#define ZMQ_ATOMIC_SOLARIS
#else
-#define ZS_ATOMIC_MUTEX
+#define ZMQ_ATOMIC_MUTEX
#endif
-namespace zs
+namespace zmq
{
// Atomic assignement.
@@ -56,11 +56,11 @@ namespace zs
// Atomic addition. Returns the old value.
inline uint32_t atomic_uint32_add (volatile uint32_t *p_, uint32_t delta_)
{
-#if defined ZS_ATOMIC_WINDOWS
+#if defined ZMQ_ATOMIC_WINDOWS
return InterlockedExchangeAdd ((LONG*) &value, increment_);
-#elif defined ZS_ATOMIC_SOLARIS
+#elif defined ZMQ_ATOMIC_SOLARIS
return atomic_add_32_nv (&value, increment_) - delta_;
-#elif defined ZS_ATOMIC_X86
+#elif defined ZMQ_ATOMIC_X86
uint32_t old;
__asm__ volatile (
"lock; xadd %0, %1\n\t"
@@ -80,13 +80,13 @@ namespace zs
// Atomic subtraction. Returns the old value.
inline uint32_t atomic_uint32_sub (volatile uint32_t *p_, uint32_t delta_)
{
-#if defined ZS_ATOMIC_WINDOWS
+#if defined ZMQ_ATOMIC_WINDOWS
LONG delta = - ((LONG) delta_);
return InterlockedExchangeAdd ((LONG*) &value, delta);
-#elif defined ZS_ATOMIC_SOLARIS
+#elif defined ZMQ_ATOMIC_SOLARIS
int32_t delta = - ((int32_t) delta_);
return atomic_add_32_nv (&value, delta) + delta_;
-#elif defined ZS_ATOMIC_X86
+#elif defined ZMQ_ATOMIC_X86
uint32_t old = -delta_;
__asm__ volatile ("lock; xaddl %0,%1"
: "=r" (old), "=m" (*p_)
@@ -116,11 +116,11 @@ namespace zs
template <typename T>
inline void *atomic_ptr_xchg (volatile T **p_, T *value_)
{
-#if defined ZS_ATOMIC_WINDOWS
+#if defined ZMQ_ATOMIC_WINDOWS
return InterlockedExchangePointer (p_, value_);
-#elif defined ZS_ATOMIC_SOLARIS
+#elif defined ZMQ_ATOMIC_SOLARIS
return atomic_swap_ptr (p_, value_);
-#elif defined ZS_ATOMIC_X86
+#elif defined ZMQ_ATOMIC_X86
void *old;
__asm__ volatile (
"lock; xchg %0, %2"
@@ -144,11 +144,11 @@ namespace zs
template <typename T>
inline void *atomic_ptr_cas (volatile T **p_, T *cmp_, T *value_)
{
-#if defined ZS_ATOMIC_WINDOWS
+#if defined ZMQ_ATOMIC_WINDOWS
return InterlockedCompareExchangePointer (p_, value_, cmp_);
-#elif defined ZS_ATOMIC_SOLARIS
+#elif defined ZMQ_ATOMIC_SOLARIS
return atomic_cas_ptr (p_, cmp_, value_);
-#elif defined ZS_ATOMIC_X86
+#elif defined ZMQ_ATOMIC_X86
void *old;
__asm__ volatile (
"lock; cmpxchg %2, %3"
@@ -167,7 +167,7 @@ namespace zs
#endif
}
-#if defined ZS_ATOMIC_X86 && defined __x86_64__
+#if defined ZMQ_ATOMIC_X86 && defined __x86_64__
typedef uint64_t atomic_bitmap_t;
#else
typedef uint32_t atomic_bitmap_t;
@@ -187,7 +187,7 @@ namespace zs
inline bool atomic_bitmap_btsr (volatile atomic_bitmap_t *p_,
int set_index_, int reset_index_)
{
-#if defined ZS_ATOMIC_WINDOWS
+#if defined ZMQ_ATOMIC_WINDOWS
while (true) {
atomic_bitmap_t oldval = *p_;
atomic_bitmap_t newval = (oldval | (atomic_bitmap_t (1) <<
@@ -197,7 +197,7 @@ namespace zs
return (oldval & (atomic_bitmap_t (1) << reset_index_)) ?
true : false;
}
-#elif defined ZS_ATOMIC_SOLARIS
+#elif defined ZMQ_ATOMIC_SOLARIS
while (true) {
atomic_bitmap_t oldval = *p_;
atomic_bitmap_t newval = (oldval | (atomic_bitmap_t (1) <<
@@ -206,7 +206,7 @@ namespace zs
return (oldval & (atomic_bitmap_t (1) << reset_index_)) ?
true : false;
}
-#elif defined ZS_ATOMIC_X86
+#elif defined ZMQ_ATOMIC_X86
atomic_bitmap_t oldval, dummy;
__asm__ volatile (
"mov %0, %1\n\t"
@@ -236,11 +236,11 @@ namespace zs
inline atomic_bitmap_t atomic_bitmap_xchg (volatile atomic_bitmap_t *p_,
atomic_bitmap_t newval_)
{
-#if defined ZS_ATOMIC_WINDOWS
+#if defined ZMQ_ATOMIC_WINDOWS
return InterlockedExchange ((volatile LONG*) p_, newval_);
-#elif defined ZS_ATOMIC_SOLARIS
+#elif defined ZMQ_ATOMIC_SOLARIS
return atomic_swap_32 (p_, newval_);
-#elif defined ZS_ATOMIC_X86
+#elif defined ZMQ_ATOMIC_X86
atomic_bitmap_t oldval = newval_;
__asm__ volatile (
"lock; xchg %0, %1"
@@ -263,7 +263,7 @@ namespace zs
inline atomic_bitmap_t atomic_bitmap_izte (volatile atomic_bitmap_t *p_,
atomic_bitmap_t thenval_, atomic_bitmap_t elseval_)
{
-#if defined ZS_ATOMIC_WINDOWS
+#if defined ZMQ_ATOMIC_WINDOWS
while (true) {
atomic_bitmap_t oldval = *p_;
atomic_bitmap_t newval = (oldval ? elseval_ : thenval_);
@@ -271,14 +271,14 @@ namespace zs
oldval) == (LONG) oldval)
return oldval;
}
-#elif defined ZS_ATOMIC_SOLARIS
+#elif defined ZMQ_ATOMIC_SOLARIS
while (true) {
atomic_bitmap_t oldval = *p_;
atomic_bitmap_t newval = (oldval ? elseval_ : thenval_);
if (atomic_cas_32 (p_, oldval, newval) == oldval)
return oldval;
}
-#elif defined ZS_ATOMIC_X86
+#elif defined ZMQ_ATOMIC_X86
atomic_bitmap_t oldval;
atomic_bitmap_t dummy;
__asm__ volatile (