diff --git a/include/llvm/System/Mutex.h b/include/llvm/System/Mutex.h index 16e898c2ded..8b5078d16d6 100644 --- a/include/llvm/System/Mutex.h +++ b/include/llvm/System/Mutex.h @@ -66,14 +66,14 @@ namespace llvm /// @name Platform Dependent Data /// @{ private: - void* data_; ///< We don't know what the data will be + void* data_; ///< We don't know what the data will be /// @} /// @name Do Not Implement /// @{ private: - Mutex(const Mutex & original); - void operator=(const Mutex &); + Mutex(const Mutex & original); + void operator=(const Mutex &); /// @} }; } diff --git a/lib/System/Mutex.cpp b/lib/System/Mutex.cpp index 2a151976913..4ec5af302f9 100644 --- a/lib/System/Mutex.cpp +++ b/lib/System/Mutex.cpp @@ -14,15 +14,16 @@ #include "llvm/System/Mutex.h" #include "llvm/Config/config.h" -namespace llvm { -using namespace sys; - //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only TRULY operating system //=== independent code. //===----------------------------------------------------------------------===// #if defined(HAVE_PTHREAD_H) && defined(HAVE_PTHREAD_MUTEX_LOCK) + +namespace llvm { +using namespace sys; + #include #include #include @@ -132,6 +133,7 @@ Mutex::tryacquire() } } + #elif defined(LLVM_ON_UNIX) #include "Unix/Mutex.inc" #elif defined( LLVM_ON_WIN32) diff --git a/lib/System/Win32/Mutex.inc b/lib/System/Win32/Mutex.inc index d6acb2352be..439ce1a401a 100644 --- a/lib/System/Win32/Mutex.inc +++ b/lib/System/Win32/Mutex.inc @@ -2,7 +2,7 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by Reid Spencer and is distributed under the +// This file was developed by Jeff Cohen and is distributed under the // University of Illinois Open Source License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// @@ -16,31 +16,42 @@ //=== is guaranteed to work on *all* Win32 variants. //===----------------------------------------------------------------------===// -namespace llvm -{ +#include "Win32.h" +#include "llvm/System/Mutex.h" + +namespace llvm { using namespace sys; -Mutex::Mutex( bool recursive) +Mutex::Mutex(bool /*recursive*/) { + data_ = new CRITICAL_SECTION; + InitializeCriticalSection((LPCRITICAL_SECTION)data_); } Mutex::~Mutex() { + DeleteCriticalSection((LPCRITICAL_SECTION)data_); + data_ = 0; } bool Mutex::acquire() { + EnterCriticalSection((LPCRITICAL_SECTION)data_); + return true; } bool Mutex::release() { + LeaveCriticalSection((LPCRITICAL_SECTION)data_); + return true; } bool -Mutex::tryacquire( void ) +Mutex::tryacquire() { + return TryEnterCriticalSection((LPCRITICAL_SECTION)data_); } } diff --git a/lib/System/Win32/Win32.h b/lib/System/Win32/Win32.h index 6cda8c675fe..7ed10471de1 100644 --- a/lib/System/Win32/Win32.h +++ b/lib/System/Win32/Win32.h @@ -2,20 +2,23 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by Reid Spencer and is distributed under the +// This file was developed by Jeff Cohen and is distributed under the // University of Illinois Open Source License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // -// This file defines things specific to Unix implementations. +// This file defines things specific to Win32 implementations. // //===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===// -//=== WARNING: Implementation here must contain only generic UNIX code that -//=== is guaranteed to work on all UNIX variants. +//=== WARNING: Implementation here must contain only generic Win32 code that +//=== is guaranteed to work on *all* Win32 variants. //===----------------------------------------------------------------------===// +// Require at least Windows 2000 API. +#define _WIN32_WINNT 0x0500 + #include "llvm/Config/config.h" // Get autoconf configuration settings #include "windows.h" #include diff --git a/win32/System/System.vcproj b/win32/System/System.vcproj index 2f03809667f..c14f7cf937d 100644 --- a/win32/System/System.vcproj +++ b/win32/System/System.vcproj @@ -116,6 +116,9 @@ + + @@ -145,6 +148,9 @@ + + @@ -173,6 +179,9 @@ + +