summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2012-02-10 14:11:26 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-13 22:15:14 +0100
commitdf4746db04087ed8641b2fbc2a8d0cf29a6993fd (patch)
treec628131c792874199833b9d0d1ad6c7947472b0f
parentf748875fa8f693aca7fc0f937ebc8499e10b0b16 (diff)
Remove the generic atomic implementation
This implementation is not used on Windows, and needs to be updated on UNIX for processors that we do not support (this will be done in a separate commit). Change-Id: I471d0ed00f4e8b89ecfa400796a2dbe2330935c6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/arch/arch.pri7
-rw-r--r--src/corelib/arch/generic/arch.pri6
-rw-r--r--src/corelib/arch/generic/qatomic_generic_unix.cpp120
-rw-r--r--src/corelib/arch/generic/qatomic_generic_windows.cpp131
-rw-r--r--src/corelib/arch/qatomic_arch.h2
-rw-r--r--src/corelib/arch/qatomic_generic.h282
6 files changed, 2 insertions, 546 deletions
diff --git a/src/corelib/arch/arch.pri b/src/corelib/arch/arch.pri
index 4803d6f8b0..825df37cd1 100644
--- a/src/corelib/arch/arch.pri
+++ b/src/corelib/arch/arch.pri
@@ -1,12 +1,10 @@
-win32:HEADERS += arch/qatomic_msvc.h \
- arch/qatomic_generic.h
+win32:HEADERS += arch/qatomic_msvc.h
win32-g++*:HEADERS += arch/qatomic_i386.h \
arch/qatomic_x86_64.h
mac:HEADERS += arch/qatomic_i386.h \
- arch/qatomic_x86_64.h \
- arch/qatomic_generic.h
+ arch/qatomic_x86_64.h
vxworks:HEADERS += arch/qatomic_vxworks.h
@@ -16,7 +14,6 @@ integrity:HEADERS += arch/qatomic_integrity.h
arch/qatomic_ia64.h \
arch/qatomic_sparc.h \
arch/qatomic_arch.h \
- arch/qatomic_generic.h \
arch/qatomic_powerpc.h \
arch/qatomic_armv5.h \
arch/qatomic_armv6.h \
diff --git a/src/corelib/arch/generic/arch.pri b/src/corelib/arch/generic/arch.pri
deleted file mode 100644
index 8fee63fa5d..0000000000
--- a/src/corelib/arch/generic/arch.pri
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# 'generic' architecture
-#
-
-unix:SOURCES += qatomic_generic_unix.cpp
-win32:SOURCES += qatomic_generic_windows.cpp
diff --git a/src/corelib/arch/generic/qatomic_generic_unix.cpp b/src/corelib/arch/generic/qatomic_generic_unix.cpp
deleted file mode 100644
index eb1498fceb..0000000000
--- a/src/corelib/arch/generic/qatomic_generic_unix.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qplatformdefs.h"
-
-#include <QtCore/qatomic.h>
-
-QT_BEGIN_NAMESPACE
-static pthread_mutex_t qAtomicMutex = PTHREAD_MUTEX_INITIALIZER;
-
-Q_CORE_EXPORT
-bool QBasicAtomicInt_testAndSetOrdered(volatile int *_q_value, int expectedValue, int newValue)
-{
- bool returnValue = false;
- pthread_mutex_lock(&qAtomicMutex);
- if (*_q_value == expectedValue) {
- *_q_value = newValue;
- returnValue = true;
- }
- pthread_mutex_unlock(&qAtomicMutex);
- return returnValue;
-}
-
-Q_CORE_EXPORT
-int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *_q_value, int newValue)
-{
- int returnValue;
- pthread_mutex_lock(&qAtomicMutex);
- returnValue = *_q_value;
- *_q_value = newValue;
- pthread_mutex_unlock(&qAtomicMutex);
- return returnValue;
-}
-
-Q_CORE_EXPORT
-int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd)
-{
- int returnValue;
- pthread_mutex_lock(&qAtomicMutex);
- returnValue = *_q_value;
- *_q_value += valueToAdd;
- pthread_mutex_unlock(&qAtomicMutex);
- return returnValue;
-}
-
-Q_CORE_EXPORT
-bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value,
- void *expectedValue,
- void *newValue)
-{
- bool returnValue = false;
- pthread_mutex_lock(&qAtomicMutex);
- if (*_q_value == expectedValue) {
- *_q_value = newValue;
- returnValue = true;
- }
- pthread_mutex_unlock(&qAtomicMutex);
- return returnValue;
-}
-
-Q_CORE_EXPORT
-void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *_q_value, void *newValue)
-{
- void *returnValue;
- pthread_mutex_lock(&qAtomicMutex);
- returnValue = *_q_value;
- *_q_value = newValue;
- pthread_mutex_unlock(&qAtomicMutex);
- return returnValue;
-}
-
-Q_CORE_EXPORT
-void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *_q_value, qptrdiff valueToAdd)
-{
- void *returnValue;
- pthread_mutex_lock(&qAtomicMutex);
- returnValue = *_q_value;
- *_q_value = reinterpret_cast<char *>(returnValue) + valueToAdd;
- pthread_mutex_unlock(&qAtomicMutex);
- return returnValue;
-}
-QT_END_NAMESPACE
diff --git a/src/corelib/arch/generic/qatomic_generic_windows.cpp b/src/corelib/arch/generic/qatomic_generic_windows.cpp
deleted file mode 100644
index dafc8133b2..0000000000
--- a/src/corelib/arch/generic/qatomic_generic_windows.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qplatformdefs.h"
-
-#include <QtCore/qatomic.h>
-
-
-class QCriticalSection
-{
-public:
- QCriticalSection() { InitializeCriticalSection(&section); }
- ~QCriticalSection() { DeleteCriticalSection(&section); }
- void lock() { EnterCriticalSection(&section); }
- void unlock() { LeaveCriticalSection(&section); }
-
-private:
- CRITICAL_SECTION section;
-};
-
-static QCriticalSection qAtomicCriticalSection;
-
-Q_CORE_EXPORT
-bool QBasicAtomicInt_testAndSetOrdered(volatile int *_q_value, int expectedValue, int newValue)
-{
- bool returnValue = false;
- qAtomicCriticalSection.lock();
- if (*_q_value == expectedValue) {
- *_q_value = newValue;
- returnValue = true;
- }
- qAtomicCriticalSection.unlock();
- return returnValue;
-}
-
-Q_CORE_EXPORT
-int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *_q_value, int newValue)
-{
- int returnValue;
- qAtomicCriticalSection.lock();
- returnValue = *_q_value;
- *_q_value = newValue;
- qAtomicCriticalSection.unlock();
- return returnValue;
-}
-
-Q_CORE_EXPORT
-int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd)
-{
- int returnValue;
- qAtomicCriticalSection.lock();
- returnValue = *_q_value;
- *_q_value += valueToAdd;
- qAtomicCriticalSection.unlock();
- return returnValue;
-}
-
-Q_CORE_EXPORT
-bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value,
- void *expectedValue,
- void *newValue)
-{
- bool returnValue = false;
- qAtomicCriticalSection.lock();
- if (*_q_value == expectedValue) {
- *_q_value = newValue;
- returnValue = true;
- }
- qAtomicCriticalSection.unlock();
- return returnValue;
-}
-
-Q_CORE_EXPORT
-void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *_q_value, void *newValue)
-{
- void *returnValue;
- qAtomicCriticalSection.lock();
- returnValue = *_q_value;
- *_q_value = newValue;
- qAtomicCriticalSection.unlock();
- return returnValue;
-}
-
-Q_CORE_EXPORT
-void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *_q_value, qptrdiff valueToAdd)
-{
- void *returnValue;
- qAtomicCriticalSection.lock();
- returnValue = *_q_value;
- *_q_value = reinterpret_cast<char *>(returnValue) + valueToAdd;
- qAtomicCriticalSection.unlock();
- return returnValue;
-}
diff --git a/src/corelib/arch/qatomic_arch.h b/src/corelib/arch/qatomic_arch.h
index 6f6d1c45a0..9219ad187a 100644
--- a/src/corelib/arch/qatomic_arch.h
+++ b/src/corelib/arch/qatomic_arch.h
@@ -54,8 +54,6 @@ QT_BEGIN_HEADER
# include "QtCore/qatomic_alpha.h"
#elif defined(QT_ARCH_BFIN)
# include "QtCore/qatomic_bfin.h"
-#elif defined(QT_ARCH_GENERIC)
-# include "QtCore/qatomic_generic.h"
#elif defined(QT_ARCH_POWERPC)
# include "QtCore/qatomic_powerpc.h"
#elif defined(QT_ARCH_S390)
diff --git a/src/corelib/arch/qatomic_generic.h b/src/corelib/arch/qatomic_generic.h
deleted file mode 100644
index 621a767dd6..0000000000
--- a/src/corelib/arch/qatomic_generic.h
+++ /dev/null
@@ -1,282 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QATOMIC_GENERIC_H
-#define QATOMIC_GENERIC_H
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE
-
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return false; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE
-
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return false; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE
-
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return false; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE
-
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return false; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return false; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return false; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return false; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return false; }
-
-Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetOrdered(volatile int *, int, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int);
-
-Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff);
-
-// Reference counting
-
-inline bool QBasicAtomicInt::ref()
-{
- return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, 1) != -1;
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, -1) != 1;
-}
-
-// Test and set for integers
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- return QBasicAtomicInt_testAndSetOrdered(&_q_value, expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-// Fetch and store for integers
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- return QBasicAtomicInt_fetchAndStoreOrdered(&_q_value, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-// Fetch and add for integers
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-// Test and set for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- union { T * volatile * typed; void * volatile * voidp; } pointer;
- pointer.typed = &_q_value;
- return QBasicAtomicPointer_testAndSetOrdered(pointer.voidp, expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-// Fetch and store for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
-{
- union { T * volatile * typed; void * volatile * voidp; } pointer;
- union { T *typed; void *voidp; } returnValue;
- pointer.typed = &_q_value;
- returnValue.voidp = QBasicAtomicPointer_fetchAndStoreOrdered(pointer.voidp, newValue);
- return returnValue.typed;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-// Fetch and add for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- union { T * volatile *typed; void * volatile *voidp; } pointer;
- union { T *typed; void *voidp; } returnValue;
- pointer.typed = &_q_value;
- returnValue.voidp = QBasicAtomicPointer_fetchAndAddOrdered(pointer.voidp, valueToAdd * sizeof(T));
- return returnValue.typed;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QATOMIC_GENERIC_H