]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/source/Target/QueueList.cpp
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / source / Target / QueueList.cpp
1 //===-- QueueList.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
14 using namespace lldb;
15 using namespace lldb_private;
16
17 QueueList::QueueList (Process *process) :
18     m_process (process),
19     m_stop_id (0),
20     m_queues (),
21     m_mutex ()
22 {
23 }
24
25 QueueList::~QueueList ()
26 {
27     Clear();
28 }
29
30 uint32_t
31 QueueList::GetSize ()
32 {
33     Mutex::Locker locker (m_mutex);
34     return m_queues.size();
35 }
36
37 lldb::QueueSP
38 QueueList::GetQueueAtIndex (uint32_t idx)
39 {
40     Mutex::Locker locker (m_mutex);
41     if (idx < m_queues.size())
42     {
43         return m_queues[idx];
44     }
45     else
46     {
47         return QueueSP();
48     }
49 }
50
51 void
52 QueueList::Clear ()
53 {
54     Mutex::Locker locker (m_mutex);
55     m_queues.clear();
56 }
57
58 void
59 QueueList::AddQueue (QueueSP queue_sp)
60 {
61     Mutex::Locker locker (m_mutex);
62     if (queue_sp.get ())
63     {
64         m_queues.push_back (queue_sp);
65     }
66 }
67
68 lldb::QueueSP
69 QueueList::FindQueueByID (lldb::queue_id_t qid)
70 {
71     QueueSP ret;
72     for (QueueSP queue_sp : Queues())
73     {
74         if (queue_sp->GetID() == qid)
75         {
76             ret = queue_sp;
77             break;
78         }
79     }
80     return ret;
81 }
82
83 lldb::QueueSP
84 QueueList::FindQueueByIndexID (uint32_t index_id)
85 {
86     QueueSP ret;
87     for (QueueSP queue_sp : Queues())
88     {
89         if (queue_sp->GetIndexID() == index_id)
90         {
91             ret = queue_sp;
92             break;
93         }
94     }
95     return ret;
96 }
97
98 lldb_private::Mutex &
99 QueueList::GetMutex ()
100 {
101     return m_mutex;
102 }