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