brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 3f16c86 Raw
45 lines · c
1//===-- condition_variable.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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef SCUDO_CONDITION_VARIABLE_H_10#define SCUDO_CONDITION_VARIABLE_H_11 12#include "condition_variable_base.h"13 14#include "common.h"15#include "platform.h"16 17#include "condition_variable_linux.h"18 19namespace scudo {20 21// A default implementation of default condition variable. It doesn't do a real22// `wait`, instead it spins a short amount of time only.23class ConditionVariableDummy24    : public ConditionVariableBase<ConditionVariableDummy> {25public:26  void notifyAllImpl(UNUSED HybridMutex &M) REQUIRES(M) {}27 28  void waitImpl(UNUSED HybridMutex &M) REQUIRES(M) {29    M.unlock();30 31    constexpr u32 SpinTimes = 64;32    volatile u32 V = 0;33    for (u32 I = 0; I < SpinTimes; ++I) {34      u32 Tmp = V + 1;35      V = Tmp;36    }37 38    M.lock();39  }40};41 42} // namespace scudo43 44#endif // SCUDO_CONDITION_VARIABLE_H_45