1218885Sdim//===- llvm/Support/Win32/Mutex.inc - Win32 Mutex Implementation -*- C++ -*-===// 2218885Sdim// 3218885Sdim// The LLVM Compiler Infrastructure 4218885Sdim// 5218885Sdim// This file is distributed under the University of Illinois Open Source 6218885Sdim// License. See LICENSE.TXT for details. 7218885Sdim// 8218885Sdim//===----------------------------------------------------------------------===// 9218885Sdim// 10218885Sdim// This file implements the Win32 specific (non-pthread) Mutex class. 11218885Sdim// 12218885Sdim//===----------------------------------------------------------------------===// 13218885Sdim 14218885Sdim//===----------------------------------------------------------------------===// 15218885Sdim//=== WARNING: Implementation here must contain only generic Win32 code that 16218885Sdim//=== is guaranteed to work on *all* Win32 variants. 17218885Sdim//===----------------------------------------------------------------------===// 18218885Sdim 19218885Sdim#include "Windows.h" 20218885Sdim#include "llvm/Support/Mutex.h" 21218885Sdim 22218885Sdimnamespace llvm { 23218885Sdimusing namespace sys; 24218885Sdim 25218885SdimMutexImpl::MutexImpl(bool /*recursive*/) 26218885Sdim{ 27218885Sdim data_ = new CRITICAL_SECTION; 28218885Sdim InitializeCriticalSection((LPCRITICAL_SECTION)data_); 29218885Sdim} 30218885Sdim 31218885SdimMutexImpl::~MutexImpl() 32218885Sdim{ 33218885Sdim DeleteCriticalSection((LPCRITICAL_SECTION)data_); 34218885Sdim delete (LPCRITICAL_SECTION)data_; 35218885Sdim data_ = 0; 36218885Sdim} 37218885Sdim 38218885Sdimbool 39218885SdimMutexImpl::acquire() 40218885Sdim{ 41218885Sdim EnterCriticalSection((LPCRITICAL_SECTION)data_); 42218885Sdim return true; 43218885Sdim} 44218885Sdim 45218885Sdimbool 46218885SdimMutexImpl::release() 47218885Sdim{ 48218885Sdim LeaveCriticalSection((LPCRITICAL_SECTION)data_); 49218885Sdim return true; 50218885Sdim} 51218885Sdim 52218885Sdimbool 53218885SdimMutexImpl::tryacquire() 54218885Sdim{ 55218885Sdim return TryEnterCriticalSection((LPCRITICAL_SECTION)data_); 56218885Sdim} 57218885Sdim 58218885Sdim} 59