diff options
Diffstat (limited to 'src/system_wrappers/source/atomic32_mac.h')
-rw-r--r-- | src/system_wrappers/source/atomic32_mac.h | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/src/system_wrappers/source/atomic32_mac.h b/src/system_wrappers/source/atomic32_mac.h deleted file mode 100644 index bf8febcdb5..0000000000 --- a/src/system_wrappers/source/atomic32_mac.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// Atomic system independant 32-bit signed integer. -// Mac implementation. -#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_ATOMIC32_MAC_H_ -#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_ATOMIC32_MAC_H_ - -#include <stdlib.h> -#include <libkern/OSAtomic.h> - -#include "common_types.h" - -namespace webrtc { -class Atomic32Impl -{ -public: - inline Atomic32Impl(WebRtc_Word32 initialValue); - inline ~Atomic32Impl(); - - inline WebRtc_Word32 operator++(); - inline WebRtc_Word32 operator--(); - - inline Atomic32Impl& operator=(const Atomic32Impl& rhs); - inline Atomic32Impl& operator=(WebRtc_Word32 rhs); - inline WebRtc_Word32 operator+=(WebRtc_Word32 rhs); - inline WebRtc_Word32 operator-=(WebRtc_Word32 rhs); - - inline bool CompareExchange(WebRtc_Word32 newValue, - WebRtc_Word32 compareValue); - - inline WebRtc_Word32 Value() const; -private: - void* _ptrMemory; - // Volatile ensures full memory barriers. - volatile WebRtc_Word32* _value; -}; - -// TODO (hellner) use aligned_malloc instead of doing it manually. -inline Atomic32Impl::Atomic32Impl(WebRtc_Word32 initialValue) - : - _ptrMemory(NULL), - _value(NULL) -{ // Align the memory associated with _value on a 32-bit boundary. This is a - // requirement for the used Mac APIs to be atomic. - // Keep _ptrMemory to be able to reclaim memory. - _ptrMemory = malloc(sizeof(WebRtc_Word32)*2); - _value = (WebRtc_Word32*) (((uintptr_t)_ptrMemory+3)&(~0x3)); - *_value = initialValue; -} - -inline Atomic32Impl::~Atomic32Impl() -{ - if(_ptrMemory != NULL) - { - free(_ptrMemory); - } -} - -inline WebRtc_Word32 Atomic32Impl::operator++() -{ - return OSAtomicIncrement32Barrier( - reinterpret_cast<volatile int32_t*>(_value)); -} - -inline WebRtc_Word32 Atomic32Impl::operator--() -{ - return OSAtomicDecrement32Barrier( - reinterpret_cast<volatile int32_t*>(_value)); -} - -inline Atomic32Impl& Atomic32Impl::operator=(const Atomic32Impl& rhs) -{ - *_value = *rhs._value; - return *this; -} - -inline Atomic32Impl& Atomic32Impl::operator=(WebRtc_Word32 rhs) -{ - *_value = rhs; - return *this; -} - -inline WebRtc_Word32 Atomic32Impl::operator+=(WebRtc_Word32 rhs) -{ - return OSAtomicAdd32Barrier(rhs, - reinterpret_cast<volatile int32_t*>(_value)); -} - -inline WebRtc_Word32 Atomic32Impl::operator-=(WebRtc_Word32 rhs) -{ - return OSAtomicAdd32Barrier(-rhs, - reinterpret_cast<volatile int32_t*>(_value)); -} - -inline bool Atomic32Impl::CompareExchange(WebRtc_Word32 newValue, - WebRtc_Word32 compareValue) -{ - return OSAtomicCompareAndSwap32Barrier( - compareValue, - newValue, - reinterpret_cast<volatile int32_t*>(_value)); -} - -inline WebRtc_Word32 Atomic32Impl::Value() const -{ - return *_value; -} -} // namespace webrtc -#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_ATOMIC32_MAC_H_ |