Silence -Wunused-variable in release builds.
[llvm/stm8.git] / lib / Support / Windows / RWMutex.inc
blob471f8fa294bef52f5093ca861a2736f055482694
1 //= llvm/Support/Win32/Mutex.inc - Win32 Reader/Writer Mutual Exclusion Lock  =//
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) RWMutex 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"
21 // FIXME: Windows does not have reader-writer locks pre-Vista.  If you want
22 // real reader-writer locks, you a threads implementation for Windows.
24 namespace llvm {
25 using namespace sys;
27 RWMutexImpl::RWMutexImpl() {
28   data_ = calloc(1, sizeof(CRITICAL_SECTION));
29   InitializeCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
32 RWMutexImpl::~RWMutexImpl() {
33   DeleteCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
34   free(data_);
37 bool RWMutexImpl::reader_acquire() {
38   EnterCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
39   return true;
42 bool RWMutexImpl::reader_release() {
43   LeaveCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
44   return true;
47 bool RWMutexImpl::writer_acquire() {
48   EnterCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
49   return true;
52 bool RWMutexImpl::writer_release() {
53   LeaveCriticalSection(static_cast<LPCRITICAL_SECTION>(data_));
54   return true;