112b93ac6SEd Maste //===-- QueueItem.cpp -------------------------------------------*- C++ -*-===//
212b93ac6SEd Maste //
312b93ac6SEd Maste //                     The LLVM Compiler Infrastructure
412b93ac6SEd Maste //
512b93ac6SEd Maste // This file is distributed under the University of Illinois Open Source
612b93ac6SEd Maste // License. See LICENSE.TXT for details.
712b93ac6SEd Maste //
812b93ac6SEd Maste //===----------------------------------------------------------------------===//
912b93ac6SEd Maste 
1012b93ac6SEd Maste #include "lldb/Target/Queue.h"
1112b93ac6SEd Maste #include "lldb/Target/Process.h"
1212b93ac6SEd Maste #include "lldb/Target/QueueItem.h"
1312b93ac6SEd Maste #include "lldb/Target/SystemRuntime.h"
1412b93ac6SEd Maste 
1512b93ac6SEd Maste using namespace lldb;
1612b93ac6SEd Maste using namespace lldb_private;
1712b93ac6SEd Maste 
1812b93ac6SEd Maste QueueItem::QueueItem (QueueSP queue_sp) :
1912b93ac6SEd Maste     m_queue_wp (),
2012b93ac6SEd Maste     m_kind (eQueueItemKindUnknown),
2112b93ac6SEd Maste     m_address (),
2212b93ac6SEd Maste     m_item_that_enqueued_this_ref (LLDB_INVALID_ADDRESS),
2312b93ac6SEd Maste     m_enqueueing_thread_id (LLDB_INVALID_THREAD_ID),
2412b93ac6SEd Maste     m_enqueueing_queue_id (LLDB_INVALID_QUEUE_ID),
2512b93ac6SEd Maste     m_target_queue_id (LLDB_INVALID_QUEUE_ID),
2612b93ac6SEd Maste     m_stop_id (0),
2712b93ac6SEd Maste     m_backtrace(),
2812b93ac6SEd Maste     m_thread_label(),
2912b93ac6SEd Maste     m_queue_label(),
3012b93ac6SEd Maste     m_target_queue_label()
3112b93ac6SEd Maste {
3212b93ac6SEd Maste     m_queue_wp = queue_sp;
3312b93ac6SEd Maste }
3412b93ac6SEd Maste 
3512b93ac6SEd Maste QueueItem::~QueueItem ()
3612b93ac6SEd Maste {
3712b93ac6SEd Maste }
3812b93ac6SEd Maste 
3912b93ac6SEd Maste QueueItemKind
4012b93ac6SEd Maste QueueItem::GetKind() const
4112b93ac6SEd Maste {
4212b93ac6SEd Maste     return m_kind;
4312b93ac6SEd Maste }
4412b93ac6SEd Maste 
4512b93ac6SEd Maste void
4612b93ac6SEd Maste QueueItem::SetKind (QueueItemKind item_kind)
4712b93ac6SEd Maste {
4812b93ac6SEd Maste     m_kind = item_kind;
4912b93ac6SEd Maste }
5012b93ac6SEd Maste 
5112b93ac6SEd Maste Address &
5212b93ac6SEd Maste QueueItem::GetAddress ()
5312b93ac6SEd Maste {
5412b93ac6SEd Maste     return m_address;
5512b93ac6SEd Maste }
5612b93ac6SEd Maste 
5712b93ac6SEd Maste void
5812b93ac6SEd Maste QueueItem::SetAddress (Address addr)
5912b93ac6SEd Maste {
6012b93ac6SEd Maste     m_address = addr;
6112b93ac6SEd Maste }
6212b93ac6SEd Maste 
6312b93ac6SEd Maste ThreadSP
6412b93ac6SEd Maste QueueItem::GetExtendedBacktraceThread (ConstString type)
6512b93ac6SEd Maste {
6612b93ac6SEd Maste     ThreadSP return_thread;
6712b93ac6SEd Maste     QueueSP queue_sp = m_queue_wp.lock();
6812b93ac6SEd Maste     if (queue_sp)
6912b93ac6SEd Maste     {
7012b93ac6SEd Maste         ProcessSP process_sp = queue_sp->GetProcess();
7112b93ac6SEd Maste         if (process_sp && process_sp->GetSystemRuntime())
7212b93ac6SEd Maste         {
7312b93ac6SEd Maste             return_thread = process_sp->GetSystemRuntime()->GetExtendedBacktraceForQueueItem (this->shared_from_this(), type);
7412b93ac6SEd Maste         }
7512b93ac6SEd Maste     }
7612b93ac6SEd Maste     return return_thread;
7712b93ac6SEd Maste }
78