1 //===-- QueueItem.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/Queue.h" 11 #include "lldb/Target/Process.h" 12 #include "lldb/Target/QueueItem.h" 13 #include "lldb/Target/SystemRuntime.h" 14 15 using namespace lldb; 16 using namespace lldb_private; 17 18 QueueItem::QueueItem (QueueSP queue_sp, lldb::addr_t item_ref) : 19 m_queue_wp (), 20 m_kind (eQueueItemKindUnknown), 21 m_address (), 22 m_item_ref (item_ref), 23 m_item_that_enqueued_this_ref (LLDB_INVALID_ADDRESS), 24 m_enqueueing_thread_id (LLDB_INVALID_THREAD_ID), 25 m_enqueueing_queue_id (LLDB_INVALID_QUEUE_ID), 26 m_target_queue_id (LLDB_INVALID_QUEUE_ID), 27 m_stop_id (0), 28 m_backtrace(), 29 m_thread_label(), 30 m_queue_label(), 31 m_target_queue_label() 32 { 33 m_queue_wp = queue_sp; 34 } 35 36 QueueItem::~QueueItem () 37 { 38 } 39 40 QueueItemKind 41 QueueItem::GetKind() const 42 { 43 return m_kind; 44 } 45 46 void 47 QueueItem::SetKind (QueueItemKind item_kind) 48 { 49 m_kind = item_kind; 50 } 51 52 Address & 53 QueueItem::GetAddress () 54 { 55 return m_address; 56 } 57 58 void 59 QueueItem::SetAddress (Address addr) 60 { 61 m_address = addr; 62 } 63 64 ThreadSP 65 QueueItem::GetExtendedBacktraceThread (ConstString type) 66 { 67 ThreadSP return_thread; 68 QueueSP queue_sp = m_queue_wp.lock(); 69 if (queue_sp) 70 { 71 ProcessSP process_sp = queue_sp->GetProcess(); 72 if (process_sp && process_sp->GetSystemRuntime()) 73 { 74 return_thread = process_sp->GetSystemRuntime()->GetExtendedBacktraceForQueueItem (this->shared_from_this(), type); 75 } 76 } 77 return return_thread; 78 } 79 80 ProcessSP 81 QueueItem::GetProcessSP() 82 { 83 ProcessSP process_sp; 84 QueueSP queue_sp = m_queue_wp.lock (); 85 if (queue_sp) 86 { 87 process_sp = queue_sp->GetProcess(); 88 } 89 return process_sp; 90 } 91