1 //===-- condition_variable_linux.h ------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef SCUDO_CONDITION_VARIABLE_LINUX_H_
10 #define SCUDO_CONDITION_VARIABLE_LINUX_H_
11 
12 #include "platform.h"
13 
14 #if SCUDO_LINUX
15 
16 #include "atomic_helpers.h"
17 #include "condition_variable_base.h"
18 #include "thread_annotations.h"
19 
20 namespace scudo {
21 
22 class ConditionVariableLinux
23     : public ConditionVariableBase<ConditionVariableLinux> {
24 public:
25   void notifyAllImpl(HybridMutex &M) REQUIRES(M);
26 
27   void waitImpl(HybridMutex &M) REQUIRES(M);
28 
29 private:
30   u32 LastNotifyAll = 0;
31   atomic_u32 Counter = {};
32 };
33 
34 } // namespace scudo
35 
36 #endif // SCUDO_LINUX
37 
38 #endif // SCUDO_CONDITION_VARIABLE_LINUX_H_
39