/// @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 &);
/// @}
};
}
#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>
}
}
+
#elif defined(LLVM_ON_UNIX)
#include "Unix/Mutex.inc"
#elif defined( LLVM_ON_WIN32)
//
// 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.
//
//===----------------------------------------------------------------------===//
//=== 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_);
}
}
//
// 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>
<File
RelativePath="..\..\lib\System\Memory.cpp">
</File>
+ <File
+ RelativePath="..\..\lib\System\Mutex.cpp">
+ </File>
<File
RelativePath="..\..\lib\System\Path.cpp">
</File>
<File
RelativePath="..\..\include\llvm\System\Memory.h">
</File>
+ <File
+ RelativePath="..\..\include\llvm\System\Mutex.h">
+ </File>
<File
RelativePath="..\..\include\llvm\System\Path.h">
</File>
<File
RelativePath="..\..\lib\System\Win32\Memory.inc">
</File>
+ <File
+ RelativePath="..\..\lib\System\Win32\Mutex.inc">
+ </File>
<File
RelativePath="..\..\lib\System\Win32\Path.inc">
</File>