X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSystem%2FMutex.cpp;h=81dcd3b418b8b6962704ff68f055bbf7ff7dfb5a;hb=963a97f1a365c8d09ca681e922371f9ec3473ee8;hp=644e1d07053821e959777860ea39aa05778cb8f0;hpb=00b16889ab461b7ecef1c91ade101186b7f1fce2;p=oota-llvm.git diff --git a/lib/System/Mutex.cpp b/lib/System/Mutex.cpp index 644e1d07053..81dcd3b418b 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. // //===----------------------------------------------------------------------===// // @@ -11,23 +11,36 @@ // //===----------------------------------------------------------------------===// -#include "llvm/System/Mutex.h" #include "llvm/Config/config.h" +#include "llvm/System/Mutex.h" //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only TRULY operating system //=== independent code. //===----------------------------------------------------------------------===// -#if defined(HAVE_PTHREAD_H) && defined(HAVE_PTHREAD_MUTEX_LOCK) - +#if !defined(ENABLE_THREADS) || ENABLE_THREADS == 0 +// 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; } +} +#else + +#if defined(HAVE_PTHREAD_H) && defined(HAVE_PTHREAD_MUTEX_LOCK) #include #include #include +namespace llvm { +using namespace sys; + + // This variable is useful for situations where the pthread library has been // compiled with weak linkage for its interface symbols. This allows the // threading support to be turned off by simply not linking against -lpthread. @@ -38,8 +51,8 @@ using namespace sys; // Note: all LLVM tools will link against -lpthread if its available since it // is configured into the LIBS variable. // Note: this line of code generates a warning if pthread_mutex_init is not -// declared with weak linkage. Its safe to ignore the warning. -static const bool pthread_enabled = static_cast(pthread_mutex_init); +// declared with weak linkage. It's safe to ignore the warning. +static const bool pthread_enabled = true; // Construct a Mutex using pthread calls Mutex::Mutex( bool recursive) @@ -62,7 +75,7 @@ Mutex::Mutex( bool recursive) errorcode = pthread_mutexattr_settype(&attr, kind); assert(errorcode == 0); -#ifndef __FreeBSD__ +#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) // Make it a process local mutex errorcode = pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_PRIVATE); #endif @@ -85,9 +98,9 @@ Mutex::~Mutex() { if (pthread_enabled) { - pthread_mutex_t* mutex = reinterpret_cast(data_); + pthread_mutex_t* mutex = static_cast(data_); assert(mutex != 0); - int errorcode = pthread_mutex_destroy(mutex); + pthread_mutex_destroy(mutex); assert(mutex != 0); } } @@ -97,7 +110,7 @@ Mutex::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); @@ -111,7 +124,7 @@ Mutex::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); @@ -125,7 +138,7 @@ Mutex::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); @@ -143,3 +156,5 @@ Mutex::tryacquire() #else #warning Neither LLVM_ON_UNIX nor LLVM_ON_WIN32 was set in System/Mutex.cpp #endif +#endif +