Remove attribution from file headers, per discussion on llvmdev.
[oota-llvm.git] / lib / System / Win32 / Mutex.inc
1 //===- llvm/System/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 "Win32.h"
20 #include "llvm/System/Mutex.h"
21
22 namespace llvm {
23 using namespace sys;
24
25 Mutex::Mutex(bool /*recursive*/)
26 {
27   data_ = new CRITICAL_SECTION;
28   InitializeCriticalSection((LPCRITICAL_SECTION)data_);
29 }
30
31 Mutex::~Mutex()
32 {
33   DeleteCriticalSection((LPCRITICAL_SECTION)data_);
34   delete (LPCRITICAL_SECTION)data_;
35   data_ = 0;
36 }
37
38 bool 
39 Mutex::acquire()
40 {
41   EnterCriticalSection((LPCRITICAL_SECTION)data_);
42   return true;
43 }
44
45 bool 
46 Mutex::release()
47 {
48   LeaveCriticalSection((LPCRITICAL_SECTION)data_);
49   return true;
50 }
51
52 bool 
53 Mutex::tryacquire()
54 {
55   return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);
56 }
57
58 }