Win32 support for Mutex class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22420 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jeff Cohen 2005-07-13 02:15:18 +00:00
parent c087a43510
commit 6d2352249a
5 changed files with 40 additions and 15 deletions

View File

@ -14,15 +14,16 @@
#include "llvm/System/Mutex.h"
#include "llvm/Config/config.h"
namespace llvm {
using namespace sys;
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only TRULY operating system
//=== independent code.
//===----------------------------------------------------------------------===//
#if defined(HAVE_PTHREAD_H) && defined(HAVE_PTHREAD_MUTEX_LOCK)
namespace llvm {
using namespace sys;
#include <cassert>
#include <pthread.h>
#include <stdlib.h>
@ -132,6 +133,7 @@ Mutex::tryacquire()
}
}
#elif defined(LLVM_ON_UNIX)
#include "Unix/Mutex.inc"
#elif defined( LLVM_ON_WIN32)

View File

@ -2,7 +2,7 @@
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// This file was developed by Jeff Cohen and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
@ -16,31 +16,42 @@
//=== is guaranteed to work on *all* Win32 variants.
//===----------------------------------------------------------------------===//
namespace llvm
{
#include "Win32.h"
#include "llvm/System/Mutex.h"
namespace llvm {
using namespace sys;
Mutex::Mutex( bool recursive)
Mutex::Mutex(bool /*recursive*/)
{
data_ = new CRITICAL_SECTION;
InitializeCriticalSection((LPCRITICAL_SECTION)data_);
}
Mutex::~Mutex()
{
DeleteCriticalSection((LPCRITICAL_SECTION)data_);
data_ = 0;
}
bool
Mutex::acquire()
{
EnterCriticalSection((LPCRITICAL_SECTION)data_);
return true;
}
bool
Mutex::release()
{
LeaveCriticalSection((LPCRITICAL_SECTION)data_);
return true;
}
bool
Mutex::tryacquire( void )
Mutex::tryacquire()
{
return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);
}
}

View File

@ -2,20 +2,23 @@
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and is distributed under the
// This file was developed by Jeff Cohen and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines things specific to Unix implementations.
// This file defines things specific to Win32 implementations.
//
//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
//=== WARNING: Implementation here must contain only generic UNIX code that
//=== is guaranteed to work on all UNIX variants.
//=== WARNING: Implementation here must contain only generic Win32 code that
//=== is guaranteed to work on *all* Win32 variants.
//===----------------------------------------------------------------------===//
// Require at least Windows 2000 API.
#define _WIN32_WINNT 0x0500
#include "llvm/Config/config.h" // Get autoconf configuration settings
#include "windows.h"
#include <cassert>

View File

@ -116,6 +116,9 @@
<File
RelativePath="..\..\lib\System\Memory.cpp">
</File>
<File
RelativePath="..\..\lib\System\Mutex.cpp">
</File>
<File
RelativePath="..\..\lib\System\Path.cpp">
</File>
@ -145,6 +148,9 @@
<File
RelativePath="..\..\include\llvm\System\Memory.h">
</File>
<File
RelativePath="..\..\include\llvm\System\Mutex.h">
</File>
<File
RelativePath="..\..\include\llvm\System\Path.h">
</File>
@ -173,6 +179,9 @@
<File
RelativePath="..\..\lib\System\Win32\Memory.inc">
</File>
<File
RelativePath="..\..\lib\System\Win32\Mutex.inc">
</File>
<File
RelativePath="..\..\lib\System\Win32\Path.inc">
</File>