1 //===-- QueueList.cpp -------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "lldb/Target/Process.h" 11 #include "lldb/Target/Queue.h" 12 #include "lldb/Target/QueueList.h" 13 14 using namespace lldb; 15 using namespace lldb_private; 16 17 QueueList::QueueList (Process *process) : 18 m_process (process), 19 m_stop_id (0), 20 m_queues (), 21 m_mutex () 22 { 23 } 24 25 QueueList::~QueueList () 26 { 27 Clear(); 28 } 29 30 uint32_t 31 QueueList::GetSize () 32 { 33 Mutex::Locker locker (m_mutex); 34 return m_queues.size(); 35 } 36 37 lldb::QueueSP 38 QueueList::GetQueueAtIndex (uint32_t idx) 39 { 40 Mutex::Locker locker (m_mutex); 41 if (idx < m_queues.size()) 42 { 43 return m_queues[idx]; 44 } 45 else 46 { 47 return QueueSP(); 48 } 49 } 50 51 void 52 QueueList::Clear () 53 { 54 Mutex::Locker locker (m_mutex); 55 m_queues.clear(); 56 } 57 58 void 59 QueueList::AddQueue (QueueSP queue_sp) 60 { 61 Mutex::Locker locker (m_mutex); 62 if (queue_sp.get ()) 63 { 64 m_queues.push_back (queue_sp); 65 } 66 } 67 68 lldb::QueueSP 69 QueueList::FindQueueByID (lldb::queue_id_t qid) 70 { 71 QueueSP ret; 72 for (QueueSP queue_sp : Queues()) 73 { 74 if (queue_sp->GetID() == qid) 75 { 76 ret = queue_sp; 77 break; 78 } 79 } 80 return ret; 81 } 82 83 lldb::QueueSP 84 QueueList::FindQueueByIndexID (uint32_t index_id) 85 { 86 QueueSP ret; 87 for (QueueSP queue_sp : Queues()) 88 { 89 if (queue_sp->GetIndexID() == index_id) 90 { 91 ret = queue_sp; 92 break; 93 } 94 } 95 return ret; 96 } 97 98 lldb_private::Mutex & 99 QueueList::GetMutex () 100 { 101 return m_mutex; 102 } 103