• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
22namespace llvm {
23
24sys::MutexImpl::MutexImpl(bool /*recursive*/)
25{
26  data_ = new CRITICAL_SECTION;
27  InitializeCriticalSection((LPCRITICAL_SECTION)data_);
28}
29
30sys::MutexImpl::~MutexImpl()
31{
32  DeleteCriticalSection((LPCRITICAL_SECTION)data_);
33  delete (LPCRITICAL_SECTION)data_;
34  data_ = 0;
35}
36
37bool
38sys::MutexImpl::acquire()
39{
40  EnterCriticalSection((LPCRITICAL_SECTION)data_);
41  return true;
42}
43
44bool
45sys::MutexImpl::release()
46{
47  LeaveCriticalSection((LPCRITICAL_SECTION)data_);
48  return true;
49}
50
51bool
52sys::MutexImpl::tryacquire()
53{
54  return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);
55}
56
57}
58