diff options
author | David Boddie <dboddie@trolltech.com> | 2009-06-24 15:17:08 (GMT) |
---|---|---|
committer | David Boddie <dboddie@trolltech.com> | 2009-06-24 15:17:08 (GMT) |
commit | 962d3938380dde01e2bd4915c51c95f47fafa0ec (patch) | |
tree | 24524e62fa3c40930a0c6335bfab4d1276aa3f22 /src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp | |
parent | f98829ae299e1f3c1f21b4bf2628601008e5141a (diff) | |
parent | dab9d7c67ed2eda150c8da9e41db75f7eeeecd0d (diff) | |
download | Qt-962d3938380dde01e2bd4915c51c95f47fafa0ec.zip Qt-962d3938380dde01e2bd4915c51c95f47fafa0ec.tar.gz Qt-962d3938380dde01e2bd4915c51c95f47fafa0ec.tar.bz2 |
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp index 3f5cbf5..d0e6df8 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp @@ -183,7 +183,7 @@ ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, con void setThreadNameInternal(const char* threadName) { -#if PLATFORM(DARWIN) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) +#if PLATFORM(DARWIN) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && !PLATFORM(IPHONE) pthread_setname_np(threadName); #else UNUSED_PARAM(threadName); @@ -267,6 +267,61 @@ void Mutex::unlock() ASSERT_UNUSED(result, !result); } + +ReadWriteLock::ReadWriteLock() +{ + pthread_rwlock_init(&m_readWriteLock, NULL); +} + +ReadWriteLock::~ReadWriteLock() +{ + pthread_rwlock_destroy(&m_readWriteLock); +} + +void ReadWriteLock::readLock() +{ + int result = pthread_rwlock_rdlock(&m_readWriteLock); + ASSERT_UNUSED(result, !result); +} + +bool ReadWriteLock::tryReadLock() +{ + int result = pthread_rwlock_tryrdlock(&m_readWriteLock); + + if (result == 0) + return true; + if (result == EBUSY || result == EAGAIN) + return false; + + ASSERT_NOT_REACHED(); + return false; +} + +void ReadWriteLock::writeLock() +{ + int result = pthread_rwlock_wrlock(&m_readWriteLock); + ASSERT_UNUSED(result, !result); +} + +bool ReadWriteLock::tryWriteLock() +{ + int result = pthread_rwlock_trywrlock(&m_readWriteLock); + + if (result == 0) + return true; + if (result == EBUSY || result == EAGAIN) + return false; + + ASSERT_NOT_REACHED(); + return false; +} + +void ReadWriteLock::unlock() +{ + int result = pthread_rwlock_unlock(&m_readWriteLock); + ASSERT_UNUSED(result, !result); +} + ThreadCondition::ThreadCondition() { pthread_cond_init(&m_condition, NULL); |