summaryrefslogtreecommitdiff
path: root/ace/Atomic_Op.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Atomic_Op.h')
-rw-r--r--ace/Atomic_Op.h257
1 files changed, 0 insertions, 257 deletions
diff --git a/ace/Atomic_Op.h b/ace/Atomic_Op.h
deleted file mode 100644
index 991625cd32f..00000000000
--- a/ace/Atomic_Op.h
+++ /dev/null
@@ -1,257 +0,0 @@
-// -*- C++ -*-
-
-//=============================================================================
-/**
- * @file Atomic_Op.h
- *
- * $Id$
- *
- * @author Douglas C. Schmidt <schmidt@uci.edu>
- */
-//=============================================================================
-
-#ifndef ACE_ATOMIC_OP_H
-#define ACE_ATOMIC_OP_H
-#include /**/ "ace/pre.h"
-
-#include "ace/config-all.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/Thread_Mutex.h"
-
-// Include the templates here.
-#include "ace/Atomic_Op_T.h"
-
-// Determine whether builtin atomic op support is
-// available on this platform.
-#if defined (ACE_HAS_THREADS)
-# if defined (WIN32)
-# if defined (ACE_HAS_INTERLOCKED_EXCHANGEADD)
-# define ACE_HAS_BUILTIN_ATOMIC_OP
-# else /* ACE_HAS_INTERLOCKED_EXCHANGEADD */
- // Inline assembly emulation of InterlockedExchangeAdd
- // is currently only implemented for MSVC (x86 only) and Borland.
-# if (defined (_MSC_VER) && defined (_M_IX86)) || defined (__BORLANDC__)
-# define ACE_HAS_BUILTIN_ATOMIC_OP
-# endif /* _MSC_VER || __BORLANDC__ */
-# endif /* ACE_HAS_INTERLOCKED_EXCHANGEADD */
-# elif defined (__GNUC__) && (defined (ACE_HAS_PENTIUM) || defined (__amd64__))
-# define ACE_HAS_BUILTIN_ATOMIC_OP
-# endif /* WIN32 */
-#endif /* ACE_HAS_THREADS */
-
-#if defined (ACE_HAS_BUILTIN_ATOMIC_OP)
-
-ACE_BEGIN_VERSIONED_NAMESPACE_DECL
-
-/**
- * @class ACE_Atomic_Op<ACE_Thread_Mutex, long>
- *
- * @brief Specialization of ACE_Atomic_Op for platforms that
- * support atomic integer operations.
- *
- * Specialization of ACE_Atomic_Op for platforms that support atomic
- * integer operations.
- */
-template<>
-class ACE_Export ACE_Atomic_Op<ACE_Thread_Mutex, long>
-{
-public:
- /// Initialize <value_> to 0.
- ACE_Atomic_Op (void);
-
- /// Initialize <value_> to c.
- ACE_Atomic_Op (const long &c);
-
- /// Manage copying...
- ACE_Atomic_Op (const ACE_Atomic_Op<ACE_Thread_Mutex, long> &c);
-
- /// Atomically pre-increment <value_>.
- long operator++ (void);
-
- /// Atomically post-increment <value_>.
- long operator++ (int);
-
- /// Atomically increment <value_> by rhs.
- long operator+= (long rhs);
-
- /// Atomically pre-decrement <value_>.
- long operator-- (void);
-
- /// Atomically post-decrement <value_>.
- long operator-- (int);
-
- /// Atomically decrement <value_> by rhs.
- long operator-= (long rhs);
-
- /// Atomically compare <value_> with rhs.
- bool operator== (long rhs) const;
-
- /// Atomically compare <value_> with rhs.
- bool operator!= (long rhs) const;
-
- /// Atomically check if <value_> greater than or equal to rhs.
- bool operator>= (long rhs) const;
-
- /// Atomically check if <value_> greater than rhs.
- bool operator> (long rhs) const;
-
- /// Atomically check if <value_> less than or equal to rhs.
- bool operator<= (long rhs) const;
-
- /// Atomically check if <value_> less than rhs.
- bool operator< (long rhs) const;
-
- /// Atomically assign rhs to <value_>.
- ACE_Atomic_Op<ACE_Thread_Mutex, long> &operator= (long rhs);
-
- /// Atomically assign <rhs> to <value_>.
- ACE_Atomic_Op<ACE_Thread_Mutex, long> &operator= (const ACE_Atomic_Op<ACE_Thread_Mutex, long> &rhs);
-
- /// Explicitly return <value_>.
- long value (void) const;
-
- /// Dump the state of an object.
- void dump (void) const;
-
- /// Explicitly return <value_> (by reference).
- volatile long &value_i (void);
-
- // ACE_ALLOC_HOOK_DECLARE;
- // Declare the dynamic allocation hooks.
-
- /// Used during ACE object manager initialization to optimize the fast
- /// atomic op implementation according to the number of CPUs.
- static void init_functions (void);
-
-private:
-
- // This function cannot be supported by this template specialization.
- // If you need access to an underlying lock, use the ACE_Atomic_Op_Ex
- // template instead.
- ACE_Thread_Mutex &mutex (void);
-
-private:
-
- /// Current object decorated by the atomic op.
- volatile long value_;
-
- // Pointers to selected atomic op implementations.
- static long (*increment_fn_) (volatile long *);
- static long (*decrement_fn_) (volatile long *);
- static long (*exchange_fn_) (volatile long *, long);
- static long (*exchange_add_fn_) (volatile long *, long);
-};
-
-/**
- * @class ACE_Atomic_Op<ACE_Thread_Mutex, unsigned long>
- *
- * @brief Specialization of ACE_Atomic_Op for platforms that
- * support atomic integer operations.
- *
- * Specialization of ACE_Atomic_Op for platforms that support atomic
- * integer operations.
- */
-template<>
-class ACE_Export ACE_Atomic_Op<ACE_Thread_Mutex, unsigned long>
-{
-public:
- /// Initialize <value_> to 0.
- ACE_Atomic_Op (void);
-
- /// Initialize <value_> to c.
- ACE_Atomic_Op (const unsigned long &c);
-
- /// Manage copying...
- ACE_Atomic_Op (const ACE_Atomic_Op<ACE_Thread_Mutex, unsigned long> &c);
-
- /// Atomically pre-increment <value_>.
- unsigned long operator++ (void);
-
- /// Atomically post-increment <value_>.
- unsigned long operator++ (int);
-
- /// Atomically increment <value_> by rhs.
- unsigned long operator+= (unsigned long rhs);
-
- /// Atomically pre-decrement <value_>.
- unsigned long operator-- (void);
-
- /// Atomically post-decrement <value_>.
- unsigned long operator-- (int);
-
- /// Atomically decrement <value_> by rhs.
- unsigned long operator-= (unsigned long rhs);
-
- /// Atomically compare <value_> with rhs.
- bool operator== (unsigned long rhs) const;
-
- /// Atomically compare <value_> with rhs.
- bool operator!= (unsigned long rhs) const;
-
- /// Atomically check if <value_> greater than or equal to rhs.
- bool operator>= (unsigned long rhs) const;
-
- /// Atomically check if <value_> greater than rhs.
- bool operator> (unsigned long rhs) const;
-
- /// Atomically check if <value_> less than or equal to rhs.
- bool operator<= (unsigned long rhs) const;
-
- /// Atomically check if <value_> less than rhs.
- bool operator< (unsigned long rhs) const;
-
- /// Atomically assign rhs to <value_>.
- ACE_Atomic_Op<ACE_Thread_Mutex, unsigned long> &operator= (unsigned long rhs);
-
- /// Atomically assign <rhs> to <value_>.
- ACE_Atomic_Op<ACE_Thread_Mutex, unsigned long> &operator= (const ACE_Atomic_Op<ACE_Thread_Mutex, unsigned long> &rhs);
-
- /// Explicitly return <value_>.
- unsigned long value (void) const;
-
- /// Dump the state of an object.
- void dump (void) const;
-
- /// Explicitly return <value_> (by reference).
- volatile unsigned long &value_i (void);
-
- // ACE_ALLOC_HOOK_DECLARE;
- // Declare the dynamic allocation hooks.
-
- /// Used during ACE object manager initialization to optimize the fast
- /// atomic op implementation according to the number of CPUs.
- static void init_functions (void);
-
-private:
-
- // This function cannot be supported by this template specialization.
- // If you need access to an underlying lock, use the ACE_Atomic_Op_Ex
- // template instead.
- ACE_Thread_Mutex &mutex (void);
-
-private:
-
- /// Current object decorated by the atomic op.
- volatile unsigned long value_;
-
- // Pointers to selected atomic op implementations.
- static long (*increment_fn_) (volatile long *);
- static long (*decrement_fn_) (volatile long *);
- static long (*exchange_fn_) (volatile long *, long);
- static long (*exchange_add_fn_) (volatile long *, long);
-};
-
-ACE_END_VERSIONED_NAMESPACE_DECL
-
-#endif /* ACE_HAS_BUILTIN_ATOMIC_OP */
-
-#if defined (__ACE_INLINE__)
-#include "ace/Atomic_Op.inl"
-#endif /* __ACE_INLINE__ */
-
-#include /**/ "ace/post.h"
-#endif /*ACE_ATOMIC_OP_H*/