summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/source/Target/QueueList.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
commit061da546b983eb767bad15e67af1174fb0bcf31c (patch)
tree83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/source/Target/QueueList.cpp
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz
wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/source/Target/QueueList.cpp')
-rw-r--r--gnu/llvm/lldb/source/Target/QueueList.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/source/Target/QueueList.cpp b/gnu/llvm/lldb/source/Target/QueueList.cpp
new file mode 100644
index 00000000000..79682513518
--- /dev/null
+++ b/gnu/llvm/lldb/source/Target/QueueList.cpp
@@ -0,0 +1,69 @@
+//===-- QueueList.cpp -------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Target/Queue.h"
+#include "lldb/Target/Process.h"
+#include "lldb/Target/QueueList.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+QueueList::QueueList(Process *process)
+ : m_process(process), m_stop_id(0), m_queues(), m_mutex() {}
+
+QueueList::~QueueList() { Clear(); }
+
+uint32_t QueueList::GetSize() {
+ std::lock_guard<std::mutex> guard(m_mutex);
+ return m_queues.size();
+}
+
+lldb::QueueSP QueueList::GetQueueAtIndex(uint32_t idx) {
+ std::lock_guard<std::mutex> guard(m_mutex);
+ if (idx < m_queues.size()) {
+ return m_queues[idx];
+ } else {
+ return QueueSP();
+ }
+}
+
+void QueueList::Clear() {
+ std::lock_guard<std::mutex> guard(m_mutex);
+ m_queues.clear();
+}
+
+void QueueList::AddQueue(QueueSP queue_sp) {
+ std::lock_guard<std::mutex> guard(m_mutex);
+ if (queue_sp.get()) {
+ m_queues.push_back(queue_sp);
+ }
+}
+
+lldb::QueueSP QueueList::FindQueueByID(lldb::queue_id_t qid) {
+ QueueSP ret;
+ for (QueueSP queue_sp : Queues()) {
+ if (queue_sp->GetID() == qid) {
+ ret = queue_sp;
+ break;
+ }
+ }
+ return ret;
+}
+
+lldb::QueueSP QueueList::FindQueueByIndexID(uint32_t index_id) {
+ QueueSP ret;
+ for (QueueSP queue_sp : Queues()) {
+ if (queue_sp->GetIndexID() == index_id) {
+ ret = queue_sp;
+ break;
+ }
+ }
+ return ret;
+}
+
+std::mutex &QueueList::GetMutex() { return m_mutex; }