blob: 21e1127e82dbe3ddec9d4571b8b105642d8d9dff [file] [log] [blame]
Jason Molenda5e8dce42013-12-13 00:29:16 +00001//===-- 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
15using namespace lldb;
16using namespace lldb_private;
17
18Queue::Queue (ProcessSP process_sp, lldb::queue_id_t queue_id, const char *queue_name) :
Jason Molendab97f44d2013-12-18 00:58:23 +000019 m_process_wp (),
Jason Molenda5e8dce42013-12-13 00:29:16 +000020 m_queue_id (queue_id),
Jason Molenda4a5ec882013-12-19 00:09:13 +000021 m_queue_name (),
Jason Molenda5e8dce42013-12-13 00:29:16 +000022 m_enqueued_items()
23{
Jason Molenda4a5ec882013-12-19 00:09:13 +000024 if (queue_name)
25 m_queue_name = queue_name;
26
Jason Molendab97f44d2013-12-18 00:58:23 +000027 m_process_wp = process_sp;
Jason Molenda5e8dce42013-12-13 00:29:16 +000028 m_index_id = process_sp->AssignIndexIDToQueue (queue_id);
29}
30
31Queue::~Queue ()
32{
33}
34
35queue_id_t
36Queue::GetID ()
37{
38 return m_queue_id;
39}
40
41const char *
42Queue::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
50uint32_t
51Queue::GetIndexID ()
52{
53 return m_index_id;
54}
55
56std::vector<lldb::ThreadSP>
57Queue::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}