Speculative fix for Windows build after r220932
[oota-llvm.git] / lib / Support / Windows / Mutex.inc
1 //===- llvm/Support/Win32/Mutex.inc - Win32 Mutex Implementation -*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements the Win32 specific (non-pthread) Mutex class.
11 //
12 //===----------------------------------------------------------------------===//
13
14 //===----------------------------------------------------------------------===//
15 //=== WARNING: Implementation here must contain only generic Win32 code that
16 //===          is guaranteed to work on *all* Win32 variants.
17 //===----------------------------------------------------------------------===//
18
19 #include "WindowsSupport.h"
20 #include "llvm/Support/Mutex.h"
21
22 namespace llvm {
23 using namespace sys;
24
25 MutexImpl::MutexImpl(bool /*recursive*/)
26 {
27   data_ = new CRITICAL_SECTION;
28   InitializeCriticalSection((LPCRITICAL_SECTION)data_);
29 }
30
31 MutexImpl::~MutexImpl()
32 {
33   DeleteCriticalSection((LPCRITICAL_SECTION)data_);
34   delete (LPCRITICAL_SECTION)data_;
35   data_ = 0;
36 }
37
38 bool
39 MutexImpl::acquire()
40 {
41   EnterCriticalSection((LPCRITICAL_SECTION)data_);
42   return true;
43 }
44
45 bool
46 MutexImpl::release()
47 {
48   LeaveCriticalSection((LPCRITICAL_SECTION)data_);
49   return true;
50 }
51
52 bool
53 MutexImpl::tryacquire()
54 {
55   return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);
56 }
57
58 }