Add a function for profiling to run at shutdown. Unlike the existing API, this
[llvm/stm8.git] / lib / Support / Windows / Mutex.inc
blob583dc6359a161350b41b272ec80f812bb87f0b45
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.
12 //===----------------------------------------------------------------------===//
14 //===----------------------------------------------------------------------===//
15 //=== WARNING: Implementation here must contain only generic Win32 code that
16 //===          is guaranteed to work on *all* Win32 variants.
17 //===----------------------------------------------------------------------===//
19 #include "Windows.h"
20 #include "llvm/Support/Mutex.h"
22 namespace llvm {
23 using namespace sys;
25 MutexImpl::MutexImpl(bool /*recursive*/)
27   data_ = new CRITICAL_SECTION;
28   InitializeCriticalSection((LPCRITICAL_SECTION)data_);
31 MutexImpl::~MutexImpl()
33   DeleteCriticalSection((LPCRITICAL_SECTION)data_);
34   delete (LPCRITICAL_SECTION)data_;
35   data_ = 0;
38 bool
39 MutexImpl::acquire()
41   EnterCriticalSection((LPCRITICAL_SECTION)data_);
42   return true;
45 bool
46 MutexImpl::release()
48   LeaveCriticalSection((LPCRITICAL_SECTION)data_);
49   return true;
52 bool
53 MutexImpl::tryacquire()
55   return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);