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)16061da546SpatrickQueueList::QueueList(Process *process) 17061da546Spatrick : m_process(process), m_stop_id(0), m_queues(), m_mutex() {} 18061da546Spatrick ~QueueList()19061da546SpatrickQueueList::~QueueList() { Clear(); } 20061da546Spatrick GetSize()21061da546Spatrickuint32_t QueueList::GetSize() { 22061da546Spatrick std::lock_guard<std::mutex> guard(m_mutex); 23061da546Spatrick return m_queues.size(); 24061da546Spatrick } 25061da546Spatrick GetQueueAtIndex(uint32_t idx)26061da546Spatricklldb::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()35061da546Spatrickvoid QueueList::Clear() { 36061da546Spatrick std::lock_guard<std::mutex> guard(m_mutex); 37061da546Spatrick m_queues.clear(); 38061da546Spatrick } 39061da546Spatrick AddQueue(QueueSP queue_sp)40061da546Spatrickvoid 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)47061da546Spatricklldb::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)58061da546Spatricklldb::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()69061da546Spatrickstd::mutex &QueueList::GetMutex() { return m_mutex; } 70