xref: /openbsd-src/gnu/llvm/lldb/source/Target/QueueList.cpp (revision dda2819751e49c83612958492e38917049128b41)
1*dda28197Spatrick //===-- QueueList.cpp -----------------------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick #include "lldb/Target/Queue.h"
10061da546Spatrick #include "lldb/Target/Process.h"
11061da546Spatrick #include "lldb/Target/QueueList.h"
12061da546Spatrick 
13061da546Spatrick using namespace lldb;
14061da546Spatrick using namespace lldb_private;
15061da546Spatrick 
QueueList(Process * process)16061da546Spatrick QueueList::QueueList(Process *process)
17061da546Spatrick     : m_process(process), m_stop_id(0), m_queues(), m_mutex() {}
18061da546Spatrick 
~QueueList()19061da546Spatrick QueueList::~QueueList() { Clear(); }
20061da546Spatrick 
GetSize()21061da546Spatrick uint32_t QueueList::GetSize() {
22061da546Spatrick   std::lock_guard<std::mutex> guard(m_mutex);
23061da546Spatrick   return m_queues.size();
24061da546Spatrick }
25061da546Spatrick 
GetQueueAtIndex(uint32_t idx)26061da546Spatrick lldb::QueueSP QueueList::GetQueueAtIndex(uint32_t idx) {
27061da546Spatrick   std::lock_guard<std::mutex> guard(m_mutex);
28061da546Spatrick   if (idx < m_queues.size()) {
29061da546Spatrick     return m_queues[idx];
30061da546Spatrick   } else {
31061da546Spatrick     return QueueSP();
32061da546Spatrick   }
33061da546Spatrick }
34061da546Spatrick 
Clear()35061da546Spatrick void QueueList::Clear() {
36061da546Spatrick   std::lock_guard<std::mutex> guard(m_mutex);
37061da546Spatrick   m_queues.clear();
38061da546Spatrick }
39061da546Spatrick 
AddQueue(QueueSP queue_sp)40061da546Spatrick void QueueList::AddQueue(QueueSP queue_sp) {
41061da546Spatrick   std::lock_guard<std::mutex> guard(m_mutex);
42061da546Spatrick   if (queue_sp.get()) {
43061da546Spatrick     m_queues.push_back(queue_sp);
44061da546Spatrick   }
45061da546Spatrick }
46061da546Spatrick 
FindQueueByID(lldb::queue_id_t qid)47061da546Spatrick lldb::QueueSP QueueList::FindQueueByID(lldb::queue_id_t qid) {
48061da546Spatrick   QueueSP ret;
49061da546Spatrick   for (QueueSP queue_sp : Queues()) {
50061da546Spatrick     if (queue_sp->GetID() == qid) {
51061da546Spatrick       ret = queue_sp;
52061da546Spatrick       break;
53061da546Spatrick     }
54061da546Spatrick   }
55061da546Spatrick   return ret;
56061da546Spatrick }
57061da546Spatrick 
FindQueueByIndexID(uint32_t index_id)58061da546Spatrick lldb::QueueSP QueueList::FindQueueByIndexID(uint32_t index_id) {
59061da546Spatrick   QueueSP ret;
60061da546Spatrick   for (QueueSP queue_sp : Queues()) {
61061da546Spatrick     if (queue_sp->GetIndexID() == index_id) {
62061da546Spatrick       ret = queue_sp;
63061da546Spatrick       break;
64061da546Spatrick     }
65061da546Spatrick   }
66061da546Spatrick   return ret;
67061da546Spatrick }
68061da546Spatrick 
GetMutex()69061da546Spatrick std::mutex &QueueList::GetMutex() { return m_mutex; }
70