summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Windows/Mutex.inc
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2010-11-29 18:16:10 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2010-11-29 18:16:10 +0000
commit447762da858c1705c5fce5288f874797dc4b1135 (patch)
treeaa93dd9d52efdac9dc7f9560dc3054ef82375fbc /llvm/lib/Support/Windows/Mutex.inc
parent8aaf49959c209561a223ecf869af096730412389 (diff)
downloadbcm5719-llvm-447762da858c1705c5fce5288f874797dc4b1135.tar.gz
bcm5719-llvm-447762da858c1705c5fce5288f874797dc4b1135.zip
Merge System into Support.
llvm-svn: 120298
Diffstat (limited to 'llvm/lib/Support/Windows/Mutex.inc')
-rw-r--r--llvm/lib/Support/Windows/Mutex.inc58
1 files changed, 58 insertions, 0 deletions
diff --git a/llvm/lib/Support/Windows/Mutex.inc b/llvm/lib/Support/Windows/Mutex.inc
new file mode 100644
index 00000000000..ff7d6429988
--- /dev/null
+++ b/llvm/lib/Support/Windows/Mutex.inc
@@ -0,0 +1,58 @@
+//===- llvm/System/Win32/Mutex.inc - Win32 Mutex Implementation -*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file implements the Win32 specific (non-pthread) Mutex class.
+//
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+//=== WARNING: Implementation here must contain only generic Win32 code that
+//=== is guaranteed to work on *all* Win32 variants.
+//===----------------------------------------------------------------------===//
+
+#include "Windows.h"
+#include "llvm/Support/Mutex.h"
+
+namespace llvm {
+using namespace sys;
+
+MutexImpl::MutexImpl(bool /*recursive*/)
+{
+ data_ = new CRITICAL_SECTION;
+ InitializeCriticalSection((LPCRITICAL_SECTION)data_);
+}
+
+MutexImpl::~MutexImpl()
+{
+ DeleteCriticalSection((LPCRITICAL_SECTION)data_);
+ delete (LPCRITICAL_SECTION)data_;
+ data_ = 0;
+}
+
+bool
+MutexImpl::acquire()
+{
+ EnterCriticalSection((LPCRITICAL_SECTION)data_);
+ return true;
+}
+
+bool
+MutexImpl::release()
+{
+ LeaveCriticalSection((LPCRITICAL_SECTION)data_);
+ return true;
+}
+
+bool
+MutexImpl::tryacquire()
+{
+ return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);
+}
+
+}
OpenPOWER on IntegriCloud