X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSystem%2FMutex.cpp;h=8ccd6e52c4d5bbdb7ec2ec55630d8a71274890bc;hb=72bdd4ca07c9353c76ae12a73532f3b2747a8c42;hp=44e3332d1791477464cd8f28071b87c01ed2ab3b;hpb=7107c3badfe78ec89dcab6c02cf1b1bcaccc42a8;p=oota-llvm.git diff --git a/lib/System/Mutex.cpp b/lib/System/Mutex.cpp index 44e3332d179..8ccd6e52c4d 100644 --- a/lib/System/Mutex.cpp +++ b/lib/System/Mutex.cpp @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by Reid Spencer and is distributed under the -// University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -13,7 +13,6 @@ #include "llvm/Config/config.h" #include "llvm/System/Mutex.h" -#include "llvm/System/IncludeFile.h" //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only TRULY operating system @@ -24,11 +23,11 @@ // Define all methods as no-ops if threading is explicitly disabled namespace llvm { using namespace sys; -Mutex::Mutex( bool recursive) { } -Mutex::~Mutex() { } -bool Mutex::acquire() { return true; } -bool Mutex::release() { return true; } -bool Mutex::tryacquire() { return true; } +MutexImpl::MutexImpl( bool recursive) { } +MutexImpl::~MutexImpl() { } +bool MutexImpl::acquire() { return true; } +bool MutexImpl::release() { return true; } +bool MutexImpl::tryacquire() { return true; } } #else @@ -53,10 +52,10 @@ using namespace sys; // is configured into the LIBS variable. // Note: this line of code generates a warning if pthread_mutex_init is not // declared with weak linkage. It's safe to ignore the warning. -static const bool pthread_enabled = static_cast(pthread_mutex_init); +static const bool pthread_enabled = true; // Construct a Mutex using pthread calls -Mutex::Mutex( bool recursive) +MutexImpl::MutexImpl( bool recursive) : data_(0) { if (pthread_enabled) @@ -76,7 +75,7 @@ Mutex::Mutex( bool recursive) errorcode = pthread_mutexattr_settype(&attr, kind); assert(errorcode == 0); -#if !defined(__FreeBSD__) && !defined(__OpenBSD__) +#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__) // Make it a process local mutex errorcode = pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_PRIVATE); #endif @@ -95,57 +94,54 @@ Mutex::Mutex( bool recursive) } // Destruct a Mutex -Mutex::~Mutex() +MutexImpl::~MutexImpl() { if (pthread_enabled) { - pthread_mutex_t* mutex = reinterpret_cast(data_); - assert(mutex != 0); - int errorcode = pthread_mutex_destroy(mutex); + pthread_mutex_t* mutex = static_cast(data_); assert(mutex != 0); + pthread_mutex_destroy(mutex); + free(mutex); } } bool -Mutex::acquire() +MutexImpl::acquire() { if (pthread_enabled) { - pthread_mutex_t* mutex = reinterpret_cast(data_); + pthread_mutex_t* mutex = static_cast(data_); assert(mutex != 0); int errorcode = pthread_mutex_lock(mutex); return errorcode == 0; - } - return false; + } else return false; } bool -Mutex::release() +MutexImpl::release() { if (pthread_enabled) { - pthread_mutex_t* mutex = reinterpret_cast(data_); + pthread_mutex_t* mutex = static_cast(data_); assert(mutex != 0); int errorcode = pthread_mutex_unlock(mutex); return errorcode == 0; - } - return false; + } else return false; } bool -Mutex::tryacquire() +MutexImpl::tryacquire() { if (pthread_enabled) { - pthread_mutex_t* mutex = reinterpret_cast(data_); + pthread_mutex_t* mutex = static_cast(data_); assert(mutex != 0); int errorcode = pthread_mutex_trylock(mutex); return errorcode == 0; - } - return false; + } else return false; } } @@ -159,4 +155,3 @@ Mutex::tryacquire() #endif #endif -DEFINING_FILE_FOR(SystemMutex)