1*5e8dce4dSJason Molenda //===-- Queue.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 #include "lldb/Target/Thread.h" 14*5e8dce4dSJason Molenda 15*5e8dce4dSJason Molenda using namespace lldb; 16*5e8dce4dSJason Molenda using namespace lldb_private; 17*5e8dce4dSJason Molenda 18*5e8dce4dSJason Molenda Queue::Queue (ProcessSP process_sp, lldb::queue_id_t queue_id, const char *queue_name) : 19*5e8dce4dSJason Molenda m_process_wp (process_sp), 20*5e8dce4dSJason Molenda m_queue_id (queue_id), 21*5e8dce4dSJason Molenda m_queue_name (queue_name), 22*5e8dce4dSJason Molenda m_enqueued_items() 23*5e8dce4dSJason Molenda { 24*5e8dce4dSJason Molenda m_index_id = process_sp->AssignIndexIDToQueue (queue_id); 25*5e8dce4dSJason Molenda } 26*5e8dce4dSJason Molenda 27*5e8dce4dSJason Molenda Queue::~Queue () 28*5e8dce4dSJason Molenda { 29*5e8dce4dSJason Molenda } 30*5e8dce4dSJason Molenda 31*5e8dce4dSJason Molenda queue_id_t 32*5e8dce4dSJason Molenda Queue::GetID () 33*5e8dce4dSJason Molenda { 34*5e8dce4dSJason Molenda return m_queue_id; 35*5e8dce4dSJason Molenda } 36*5e8dce4dSJason Molenda 37*5e8dce4dSJason Molenda const char * 38*5e8dce4dSJason Molenda Queue::GetName () 39*5e8dce4dSJason Molenda { 40*5e8dce4dSJason Molenda const char *result = NULL; 41*5e8dce4dSJason Molenda if (m_queue_name.size() > 0) 42*5e8dce4dSJason Molenda result = m_queue_name.c_str(); 43*5e8dce4dSJason Molenda return result; 44*5e8dce4dSJason Molenda } 45*5e8dce4dSJason Molenda 46*5e8dce4dSJason Molenda uint32_t 47*5e8dce4dSJason Molenda Queue::GetIndexID () 48*5e8dce4dSJason Molenda { 49*5e8dce4dSJason Molenda return m_index_id; 50*5e8dce4dSJason Molenda } 51*5e8dce4dSJason Molenda 52*5e8dce4dSJason Molenda std::vector<lldb::ThreadSP> 53*5e8dce4dSJason Molenda Queue::GetThreads () 54*5e8dce4dSJason Molenda { 55*5e8dce4dSJason Molenda std::vector<ThreadSP> result; 56*5e8dce4dSJason Molenda ProcessSP process_sp = m_process_wp.lock(); 57*5e8dce4dSJason Molenda if (process_sp.get ()) 58*5e8dce4dSJason Molenda { 59*5e8dce4dSJason Molenda for (ThreadSP thread_sp : process_sp->Threads()) 60*5e8dce4dSJason Molenda { 61*5e8dce4dSJason Molenda if (thread_sp->GetQueueID() == m_queue_id) 62*5e8dce4dSJason Molenda { 63*5e8dce4dSJason Molenda result.push_back (thread_sp); 64*5e8dce4dSJason Molenda } 65*5e8dce4dSJason Molenda } 66*5e8dce4dSJason Molenda } 67*5e8dce4dSJason Molenda return result; 68*5e8dce4dSJason Molenda } 69