15e8dce4dSJason Molenda //===-- Queue.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 #include "lldb/Target/Thread.h" 145e8dce4dSJason Molenda 155e8dce4dSJason Molenda using namespace lldb; 165e8dce4dSJason Molenda using namespace lldb_private; 175e8dce4dSJason Molenda 185e8dce4dSJason Molenda Queue::Queue (ProcessSP process_sp, lldb::queue_id_t queue_id, const char *queue_name) : 19*b97f44d9SJason Molenda m_process_wp (), 205e8dce4dSJason Molenda m_queue_id (queue_id), 215e8dce4dSJason Molenda m_queue_name (queue_name), 225e8dce4dSJason Molenda m_enqueued_items() 235e8dce4dSJason Molenda { 24*b97f44d9SJason Molenda m_process_wp = process_sp; 255e8dce4dSJason Molenda m_index_id = process_sp->AssignIndexIDToQueue (queue_id); 265e8dce4dSJason Molenda } 275e8dce4dSJason Molenda 285e8dce4dSJason Molenda Queue::~Queue () 295e8dce4dSJason Molenda { 305e8dce4dSJason Molenda } 315e8dce4dSJason Molenda 325e8dce4dSJason Molenda queue_id_t 335e8dce4dSJason Molenda Queue::GetID () 345e8dce4dSJason Molenda { 355e8dce4dSJason Molenda return m_queue_id; 365e8dce4dSJason Molenda } 375e8dce4dSJason Molenda 385e8dce4dSJason Molenda const char * 395e8dce4dSJason Molenda Queue::GetName () 405e8dce4dSJason Molenda { 415e8dce4dSJason Molenda const char *result = NULL; 425e8dce4dSJason Molenda if (m_queue_name.size() > 0) 435e8dce4dSJason Molenda result = m_queue_name.c_str(); 445e8dce4dSJason Molenda return result; 455e8dce4dSJason Molenda } 465e8dce4dSJason Molenda 475e8dce4dSJason Molenda uint32_t 485e8dce4dSJason Molenda Queue::GetIndexID () 495e8dce4dSJason Molenda { 505e8dce4dSJason Molenda return m_index_id; 515e8dce4dSJason Molenda } 525e8dce4dSJason Molenda 535e8dce4dSJason Molenda std::vector<lldb::ThreadSP> 545e8dce4dSJason Molenda Queue::GetThreads () 555e8dce4dSJason Molenda { 565e8dce4dSJason Molenda std::vector<ThreadSP> result; 575e8dce4dSJason Molenda ProcessSP process_sp = m_process_wp.lock(); 585e8dce4dSJason Molenda if (process_sp.get ()) 595e8dce4dSJason Molenda { 605e8dce4dSJason Molenda for (ThreadSP thread_sp : process_sp->Threads()) 615e8dce4dSJason Molenda { 625e8dce4dSJason Molenda if (thread_sp->GetQueueID() == m_queue_id) 635e8dce4dSJason Molenda { 645e8dce4dSJason Molenda result.push_back (thread_sp); 655e8dce4dSJason Molenda } 665e8dce4dSJason Molenda } 675e8dce4dSJason Molenda } 685e8dce4dSJason Molenda return result; 695e8dce4dSJason Molenda } 70