diff options
author | Jeff Cohen <jeffc@jolt-lang.org> | 2005-07-13 02:15:18 +0000 |
---|---|---|
committer | Jeff Cohen <jeffc@jolt-lang.org> | 2005-07-13 02:15:18 +0000 |
commit | 6d2352249af8853c8307a7cf679017b32d27958c (patch) | |
tree | e3fcf758ddf54cbe8d1106dac4fefc811a57d006 | |
parent | c087a435109cdc943da094a21371f7d66d5b0e54 (diff) | |
download | external_llvm-6d2352249af8853c8307a7cf679017b32d27958c.zip external_llvm-6d2352249af8853c8307a7cf679017b32d27958c.tar.gz external_llvm-6d2352249af8853c8307a7cf679017b32d27958c.tar.bz2 |
Win32 support for Mutex class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22420 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/System/Mutex.h | 6 | ||||
-rw-r--r-- | lib/System/Mutex.cpp | 8 | ||||
-rw-r--r-- | lib/System/Win32/Mutex.inc | 21 | ||||
-rw-r--r-- | lib/System/Win32/Win32.h | 11 | ||||
-rw-r--r-- | win32/System/System.vcproj | 9 |
5 files changed, 40 insertions, 15 deletions
diff --git a/include/llvm/System/Mutex.h b/include/llvm/System/Mutex.h index 16e898c..8b5078d 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 2a15197..4ec5af3 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 <cassert> #include <pthread.h> #include <stdlib.h> @@ -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 d6acb23..439ce1a 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 6cda8c6..7ed1047 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 <cassert> diff --git a/win32/System/System.vcproj b/win32/System/System.vcproj index 2f03809..c14f7cf 100644 --- a/win32/System/System.vcproj +++ b/win32/System/System.vcproj @@ -117,6 +117,9 @@ RelativePath="..\..\lib\System\Memory.cpp"> </File> <File + RelativePath="..\..\lib\System\Mutex.cpp"> + </File> + <File RelativePath="..\..\lib\System\Path.cpp"> </File> <File @@ -146,6 +149,9 @@ RelativePath="..\..\include\llvm\System\Memory.h"> </File> <File + RelativePath="..\..\include\llvm\System\Mutex.h"> + </File> + <File RelativePath="..\..\include\llvm\System\Path.h"> </File> <File @@ -174,6 +180,9 @@ RelativePath="..\..\lib\System\Win32\Memory.inc"> </File> <File + RelativePath="..\..\lib\System\Win32\Mutex.inc"> + </File> + <File RelativePath="..\..\lib\System\Win32\Path.inc"> </File> <File |