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