Path: blob/main/contrib/llvm-project/lldb/source/API/SBMutex.cpp
213765 views
//===-- SBMutex.cpp -------------------------------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "lldb/API/SBMutex.h"9#include "lldb/Target/Target.h"10#include "lldb/Utility/Instrumentation.h"11#include "lldb/lldb-forward.h"12#include <memory>13#include <mutex>1415using namespace lldb;16using namespace lldb_private;1718SBMutex::SBMutex() : m_opaque_sp(std::make_shared<std::recursive_mutex>()) {19LLDB_INSTRUMENT_VA(this);20}2122SBMutex::SBMutex(const SBMutex &rhs) : m_opaque_sp(rhs.m_opaque_sp) {23LLDB_INSTRUMENT_VA(this);24}2526const SBMutex &SBMutex::operator=(const SBMutex &rhs) {27LLDB_INSTRUMENT_VA(this);2829m_opaque_sp = rhs.m_opaque_sp;30return *this;31}3233SBMutex::SBMutex(lldb::TargetSP target_sp)34: m_opaque_sp(std::shared_ptr<std::recursive_mutex>(35target_sp, &target_sp->GetAPIMutex())) {36LLDB_INSTRUMENT_VA(this, target_sp);37}3839SBMutex::~SBMutex() { LLDB_INSTRUMENT_VA(this); }4041bool SBMutex::IsValid() const {42LLDB_INSTRUMENT_VA(this);4344return static_cast<bool>(m_opaque_sp);45}4647void SBMutex::lock() const {48LLDB_INSTRUMENT_VA(this);4950if (m_opaque_sp)51m_opaque_sp->lock();52}5354void SBMutex::unlock() const {55LLDB_INSTRUMENT_VA(this);5657if (m_opaque_sp)58m_opaque_sp->unlock();59}606162