124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- PThreadCondition.h --------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Created by Greg Clayton on 6/16/07. 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef __PThreadCondition_h__ 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define __PThreadCondition_h__ 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <pthread.h> 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass PThreadCondition 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner PThreadCondition() 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ::pthread_cond_init (&m_condition, NULL); 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~PThreadCondition() 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ::pthread_cond_destroy (&m_condition); 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner pthread_cond_t *Condition() 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return &m_condition; 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int Broadcast() 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return ::pthread_cond_broadcast (&m_condition); 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner int Signal() 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return ::pthread_cond_signal (&m_condition); 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner pthread_cond_t m_condition; 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 54