15e8dce4dSJason Molenda //===-- QueueList.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 
145e8dce4dSJason Molenda using namespace lldb;
155e8dce4dSJason Molenda using namespace lldb_private;
165e8dce4dSJason Molenda 
17*bb19a13cSSaleem Abdulrasool QueueList::QueueList(Process *process) : m_process(process), m_stop_id(0), m_queues(), m_mutex()
185e8dce4dSJason Molenda {
195e8dce4dSJason Molenda }
205e8dce4dSJason Molenda 
215e8dce4dSJason Molenda QueueList::~QueueList ()
225e8dce4dSJason Molenda {
235e8dce4dSJason Molenda     Clear();
245e8dce4dSJason Molenda }
255e8dce4dSJason Molenda 
265e8dce4dSJason Molenda uint32_t
275e8dce4dSJason Molenda QueueList::GetSize ()
285e8dce4dSJason Molenda {
29*bb19a13cSSaleem Abdulrasool     std::lock_guard<std::mutex> guard(m_mutex);
305e8dce4dSJason Molenda     return m_queues.size();
315e8dce4dSJason Molenda }
325e8dce4dSJason Molenda 
335e8dce4dSJason Molenda lldb::QueueSP
345e8dce4dSJason Molenda QueueList::GetQueueAtIndex (uint32_t idx)
355e8dce4dSJason Molenda {
36*bb19a13cSSaleem Abdulrasool     std::lock_guard<std::mutex> guard(m_mutex);
375e8dce4dSJason Molenda     if (idx < m_queues.size())
385e8dce4dSJason Molenda     {
395e8dce4dSJason Molenda         return m_queues[idx];
405e8dce4dSJason Molenda     }
415e8dce4dSJason Molenda     else
425e8dce4dSJason Molenda     {
435e8dce4dSJason Molenda         return QueueSP();
445e8dce4dSJason Molenda     }
455e8dce4dSJason Molenda }
465e8dce4dSJason Molenda 
475e8dce4dSJason Molenda void
485e8dce4dSJason Molenda QueueList::Clear ()
495e8dce4dSJason Molenda {
50*bb19a13cSSaleem Abdulrasool     std::lock_guard<std::mutex> guard(m_mutex);
515e8dce4dSJason Molenda     m_queues.clear();
525e8dce4dSJason Molenda }
535e8dce4dSJason Molenda 
545e8dce4dSJason Molenda void
555e8dce4dSJason Molenda QueueList::AddQueue (QueueSP queue_sp)
565e8dce4dSJason Molenda {
57*bb19a13cSSaleem Abdulrasool     std::lock_guard<std::mutex> guard(m_mutex);
585e8dce4dSJason Molenda     if (queue_sp.get ())
595e8dce4dSJason Molenda     {
605e8dce4dSJason Molenda         m_queues.push_back (queue_sp);
615e8dce4dSJason Molenda     }
625e8dce4dSJason Molenda }
635e8dce4dSJason Molenda 
645e8dce4dSJason Molenda lldb::QueueSP
655e8dce4dSJason Molenda QueueList::FindQueueByID (lldb::queue_id_t qid)
665e8dce4dSJason Molenda {
675e8dce4dSJason Molenda     QueueSP ret;
685e8dce4dSJason Molenda     for (QueueSP queue_sp : Queues())
695e8dce4dSJason Molenda     {
705e8dce4dSJason Molenda         if (queue_sp->GetID() == qid)
715e8dce4dSJason Molenda         {
725e8dce4dSJason Molenda             ret = queue_sp;
735e8dce4dSJason Molenda             break;
745e8dce4dSJason Molenda         }
755e8dce4dSJason Molenda     }
765e8dce4dSJason Molenda     return ret;
775e8dce4dSJason Molenda }
785e8dce4dSJason Molenda 
795e8dce4dSJason Molenda lldb::QueueSP
805e8dce4dSJason Molenda QueueList::FindQueueByIndexID (uint32_t index_id)
815e8dce4dSJason Molenda {
825e8dce4dSJason Molenda     QueueSP ret;
835e8dce4dSJason Molenda     for (QueueSP queue_sp : Queues())
845e8dce4dSJason Molenda     {
855e8dce4dSJason Molenda         if (queue_sp->GetIndexID() == index_id)
865e8dce4dSJason Molenda         {
875e8dce4dSJason Molenda             ret = queue_sp;
885e8dce4dSJason Molenda             break;
895e8dce4dSJason Molenda         }
905e8dce4dSJason Molenda     }
915e8dce4dSJason Molenda     return ret;
925e8dce4dSJason Molenda }
935e8dce4dSJason Molenda 
94*bb19a13cSSaleem Abdulrasool std::mutex &
955e8dce4dSJason Molenda QueueList::GetMutex()
965e8dce4dSJason Molenda {
975e8dce4dSJason Molenda     return m_mutex;
985e8dce4dSJason Molenda }
99