1*80814287SRaphael Isemann //===-- QueueList.cpp -----------------------------------------------------===// 25e8dce4dSJason Molenda // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65e8dce4dSJason Molenda // 75e8dce4dSJason Molenda //===----------------------------------------------------------------------===// 85e8dce4dSJason Molenda 95e8dce4dSJason Molenda #include "lldb/Target/Queue.h" 10b9c1b51eSKate Stone #include "lldb/Target/Process.h" 115e8dce4dSJason Molenda #include "lldb/Target/QueueList.h" 125e8dce4dSJason Molenda 135e8dce4dSJason Molenda using namespace lldb; 145e8dce4dSJason Molenda using namespace lldb_private; 155e8dce4dSJason Molenda QueueList(Process * process)16b9c1b51eSKate StoneQueueList::QueueList(Process *process) 17b9c1b51eSKate Stone : m_process(process), m_stop_id(0), m_queues(), m_mutex() {} 185e8dce4dSJason Molenda ~QueueList()19b9c1b51eSKate StoneQueueList::~QueueList() { Clear(); } 205e8dce4dSJason Molenda GetSize()21b9c1b51eSKate Stoneuint32_t QueueList::GetSize() { 22bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 235e8dce4dSJason Molenda return m_queues.size(); 245e8dce4dSJason Molenda } 255e8dce4dSJason Molenda GetQueueAtIndex(uint32_t idx)26b9c1b51eSKate Stonelldb::QueueSP QueueList::GetQueueAtIndex(uint32_t idx) { 27bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 28b9c1b51eSKate Stone if (idx < m_queues.size()) { 295e8dce4dSJason Molenda return m_queues[idx]; 30b9c1b51eSKate Stone } else { 315e8dce4dSJason Molenda return QueueSP(); 325e8dce4dSJason Molenda } 335e8dce4dSJason Molenda } 345e8dce4dSJason Molenda Clear()35b9c1b51eSKate Stonevoid QueueList::Clear() { 36bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 375e8dce4dSJason Molenda m_queues.clear(); 385e8dce4dSJason Molenda } 395e8dce4dSJason Molenda AddQueue(QueueSP queue_sp)40b9c1b51eSKate Stonevoid QueueList::AddQueue(QueueSP queue_sp) { 41bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 42b9c1b51eSKate Stone if (queue_sp.get()) { 435e8dce4dSJason Molenda m_queues.push_back(queue_sp); 445e8dce4dSJason Molenda } 455e8dce4dSJason Molenda } 465e8dce4dSJason Molenda FindQueueByID(lldb::queue_id_t qid)47b9c1b51eSKate Stonelldb::QueueSP QueueList::FindQueueByID(lldb::queue_id_t qid) { 485e8dce4dSJason Molenda QueueSP ret; 49b9c1b51eSKate Stone for (QueueSP queue_sp : Queues()) { 50b9c1b51eSKate Stone if (queue_sp->GetID() == qid) { 515e8dce4dSJason Molenda ret = queue_sp; 525e8dce4dSJason Molenda break; 535e8dce4dSJason Molenda } 545e8dce4dSJason Molenda } 555e8dce4dSJason Molenda return ret; 565e8dce4dSJason Molenda } 575e8dce4dSJason Molenda FindQueueByIndexID(uint32_t index_id)58b9c1b51eSKate Stonelldb::QueueSP QueueList::FindQueueByIndexID(uint32_t index_id) { 595e8dce4dSJason Molenda QueueSP ret; 60b9c1b51eSKate Stone for (QueueSP queue_sp : Queues()) { 61b9c1b51eSKate Stone if (queue_sp->GetIndexID() == index_id) { 625e8dce4dSJason Molenda ret = queue_sp; 635e8dce4dSJason Molenda break; 645e8dce4dSJason Molenda } 655e8dce4dSJason Molenda } 665e8dce4dSJason Molenda return ret; 675e8dce4dSJason Molenda } 685e8dce4dSJason Molenda GetMutex()69b9c1b51eSKate Stonestd::mutex &QueueList::GetMutex() { return m_mutex; } 70