130fdc8d8SChris Lattner //===-- PThreadCondition.h --------------------------------------*- C++ -*-===//
230fdc8d8SChris Lattner //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
630fdc8d8SChris Lattner //
730fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
830fdc8d8SChris Lattner //
930fdc8d8SChris Lattner //  Created by Greg Clayton on 6/16/07.
1030fdc8d8SChris Lattner //
1130fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
1230fdc8d8SChris Lattner 
13*cdc514e4SJonas Devlieghere #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_PTHREADCONDITION_H
14*cdc514e4SJonas Devlieghere #define LLDB_TOOLS_DEBUGSERVER_SOURCE_PTHREADCONDITION_H
1530fdc8d8SChris Lattner 
1630fdc8d8SChris Lattner #include <pthread.h>
1730fdc8d8SChris Lattner 
18b9c1b51eSKate Stone class PThreadCondition {
1930fdc8d8SChris Lattner public:
PThreadCondition()20b9c1b51eSKate Stone   PThreadCondition() { ::pthread_cond_init(&m_condition, NULL); }
2130fdc8d8SChris Lattner 
~PThreadCondition()22b9c1b51eSKate Stone   ~PThreadCondition() { ::pthread_cond_destroy(&m_condition); }
2330fdc8d8SChris Lattner 
Condition()24b9c1b51eSKate Stone   pthread_cond_t *Condition() { return &m_condition; }
2530fdc8d8SChris Lattner 
Broadcast()26b9c1b51eSKate Stone   int Broadcast() { return ::pthread_cond_broadcast(&m_condition); }
2730fdc8d8SChris Lattner 
Signal()28b9c1b51eSKate Stone   int Signal() { return ::pthread_cond_signal(&m_condition); }
2930fdc8d8SChris Lattner 
3030fdc8d8SChris Lattner protected:
3130fdc8d8SChris Lattner   pthread_cond_t m_condition;
3230fdc8d8SChris Lattner };
3330fdc8d8SChris Lattner 
3430fdc8d8SChris Lattner #endif
35