//===-- Support/ThreadSupport.h - Generic threading support -----*- C++ -*-===//
// 
//                     The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
// 
//===----------------------------------------------------------------------===//
//
// This file defines platform-agnostic interfaces that can be used to write
// multi-threaded programs.  Autoconf is used to chose the correct
// implementation of these interfaces, or default to a non-thread-capable system
// if no matching system support is available.
//
//===----------------------------------------------------------------------===//

#ifndef SUPPORT_THREADSUPPORT_H
#define SUPPORT_THREADSUPPORT_H

// FIXME: We need autoconf support to detect pthreads!
#if 0
#include "Support/ThreadSupport-PThreads.h"
#else
#include "Support/ThreadSupport-NoSupport.h"
#endif // If no system support is available

namespace llvm {
  /// MutexLocker - Instances of this class acquire a given Lock when
  /// constructed and hold that lock until destruction.
  ///
  class MutexLocker {
    Mutex &M;
    MutexLocker(const LockHolder &);    // DO NOT IMPLEMENT
    void operator=(const MutexLocker&); // DO NOT IMPLEMENT
  public:
    MutexLocker(Mutex &m) : M(m) { M.acquire(); }
    ~MutexLocker() { M.release(); }
  };
}

#endif // SUPPORT_THREADSUPPORT_H

//===-- Support/ThreadSupport.h - Generic threading support -----*- C++ -*-===//
// 
//                     The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
// 
//===----------------------------------------------------------------------===//
//
// This file defines platform-agnostic interfaces that can be used to write
// multi-threaded programs.  Autoconf is used to chose the correct
// implementation of these interfaces, or default to a non-thread-capable system
// if no matching system support is available.
//
//===----------------------------------------------------------------------===//

#ifndef SUPPORT_THREADSUPPORT_H
#define SUPPORT_THREADSUPPORT_H

// FIXME: Eventually don't #include config.h here
#include "Config/config.h"
#if defined(HAVE_PTHREAD_MUTEX_LOCK) && HAVE_PTHREAD_MUTEX_LOCK
#include "Support/ThreadSupport-PThreads.h"
#else
#include "Support/ThreadSupport-NoSupport.h"
#endif // If no system support is available

namespace llvm {
  /// MutexLocker - Instances of this class acquire a given Lock when
  /// constructed and hold that lock until destruction.
  ///
  class MutexLocker {
    Mutex &M;
    MutexLocker(const MutexLocker &);    // DO NOT IMPLEMENT
    void operator=(const MutexLocker &); // DO NOT IMPLEMENT
  public:
    MutexLocker(Mutex &m) : M(m) { M.acquire(); }
    ~MutexLocker() { M.release(); }
  };
}

#endif // SUPPORT_THREADSUPPORT_H

Use autoconf answers from config.h (FIXME, should autoconf this file directly instead).
Use autoconf answers from config.h (FIXME, should autoconf this file
directly instead).

Fix LockHolder/MutexLocker typo.


git-svn-id: 0ff597fd157e6f4fc38580e8d64ab130330d2411@11156 91177308-0d34-0410-b5e6-96231b3b80d8
