15e8dce4dSJason Molenda //===-- QueueList.cpp -------------------------------------------*- C++ -*-===// 25e8dce4dSJason Molenda // 35e8dce4dSJason Molenda // The LLVM Compiler Infrastructure 45e8dce4dSJason Molenda // 55e8dce4dSJason Molenda // This file is distributed under the University of Illinois Open Source 65e8dce4dSJason Molenda // License. See LICENSE.TXT for details. 75e8dce4dSJason Molenda // 85e8dce4dSJason Molenda //===----------------------------------------------------------------------===// 95e8dce4dSJason Molenda 105e8dce4dSJason Molenda #include "lldb/Target/Process.h" 115e8dce4dSJason Molenda #include "lldb/Target/Queue.h" 125e8dce4dSJason Molenda #include "lldb/Target/QueueList.h" 135e8dce4dSJason Molenda 145e8dce4dSJason Molenda using namespace lldb; 155e8dce4dSJason Molenda using namespace lldb_private; 165e8dce4dSJason Molenda 17*bb19a13cSSaleem Abdulrasool QueueList::QueueList(Process *process) : m_process(process), m_stop_id(0), m_queues(), m_mutex() 185e8dce4dSJason Molenda { 195e8dce4dSJason Molenda } 205e8dce4dSJason Molenda 215e8dce4dSJason Molenda QueueList::~QueueList () 225e8dce4dSJason Molenda { 235e8dce4dSJason Molenda Clear(); 245e8dce4dSJason Molenda } 255e8dce4dSJason Molenda 265e8dce4dSJason Molenda uint32_t 275e8dce4dSJason Molenda QueueList::GetSize () 285e8dce4dSJason Molenda { 29*bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 305e8dce4dSJason Molenda return m_queues.size(); 315e8dce4dSJason Molenda } 325e8dce4dSJason Molenda 335e8dce4dSJason Molenda lldb::QueueSP 345e8dce4dSJason Molenda QueueList::GetQueueAtIndex (uint32_t idx) 355e8dce4dSJason Molenda { 36*bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 375e8dce4dSJason Molenda if (idx < m_queues.size()) 385e8dce4dSJason Molenda { 395e8dce4dSJason Molenda return m_queues[idx]; 405e8dce4dSJason Molenda } 415e8dce4dSJason Molenda else 425e8dce4dSJason Molenda { 435e8dce4dSJason Molenda return QueueSP(); 445e8dce4dSJason Molenda } 455e8dce4dSJason Molenda } 465e8dce4dSJason Molenda 475e8dce4dSJason Molenda void 485e8dce4dSJason Molenda QueueList::Clear () 495e8dce4dSJason Molenda { 50*bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 515e8dce4dSJason Molenda m_queues.clear(); 525e8dce4dSJason Molenda } 535e8dce4dSJason Molenda 545e8dce4dSJason Molenda void 555e8dce4dSJason Molenda QueueList::AddQueue (QueueSP queue_sp) 565e8dce4dSJason Molenda { 57*bb19a13cSSaleem Abdulrasool std::lock_guard<std::mutex> guard(m_mutex); 585e8dce4dSJason Molenda if (queue_sp.get ()) 595e8dce4dSJason Molenda { 605e8dce4dSJason Molenda m_queues.push_back (queue_sp); 615e8dce4dSJason Molenda } 625e8dce4dSJason Molenda } 635e8dce4dSJason Molenda 645e8dce4dSJason Molenda lldb::QueueSP 655e8dce4dSJason Molenda QueueList::FindQueueByID (lldb::queue_id_t qid) 665e8dce4dSJason Molenda { 675e8dce4dSJason Molenda QueueSP ret; 685e8dce4dSJason Molenda for (QueueSP queue_sp : Queues()) 695e8dce4dSJason Molenda { 705e8dce4dSJason Molenda if (queue_sp->GetID() == qid) 715e8dce4dSJason Molenda { 725e8dce4dSJason Molenda ret = queue_sp; 735e8dce4dSJason Molenda break; 745e8dce4dSJason Molenda } 755e8dce4dSJason Molenda } 765e8dce4dSJason Molenda return ret; 775e8dce4dSJason Molenda } 785e8dce4dSJason Molenda 795e8dce4dSJason Molenda lldb::QueueSP 805e8dce4dSJason Molenda QueueList::FindQueueByIndexID (uint32_t index_id) 815e8dce4dSJason Molenda { 825e8dce4dSJason Molenda QueueSP ret; 835e8dce4dSJason Molenda for (QueueSP queue_sp : Queues()) 845e8dce4dSJason Molenda { 855e8dce4dSJason Molenda if (queue_sp->GetIndexID() == index_id) 865e8dce4dSJason Molenda { 875e8dce4dSJason Molenda ret = queue_sp; 885e8dce4dSJason Molenda break; 895e8dce4dSJason Molenda } 905e8dce4dSJason Molenda } 915e8dce4dSJason Molenda return ret; 925e8dce4dSJason Molenda } 935e8dce4dSJason Molenda 94*bb19a13cSSaleem Abdulrasool std::mutex & 955e8dce4dSJason Molenda QueueList::GetMutex() 965e8dce4dSJason Molenda { 975e8dce4dSJason Molenda return m_mutex; 985e8dce4dSJason Molenda } 99