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