15e8dce4dSJason Molenda //===-- SBQueue.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/lldb-python.h" 115e8dce4dSJason Molenda 12da0fc76eSVirgile Bello #include <inttypes.h> 13da0fc76eSVirgile Bello 145e8dce4dSJason Molenda #include "lldb/API/SBQueue.h" 155e8dce4dSJason Molenda 165e8dce4dSJason Molenda #include "lldb/API/SBProcess.h" 175e8dce4dSJason Molenda #include "lldb/API/SBThread.h" 185e8dce4dSJason Molenda #include "lldb/Core/Log.h" 195e8dce4dSJason Molenda #include "lldb/Target/Process.h" 205e8dce4dSJason Molenda #include "lldb/Target/Queue.h" 215e8dce4dSJason Molenda #include "lldb/Target/QueueItem.h" 225e8dce4dSJason Molenda #include "lldb/Target/Thread.h" 235e8dce4dSJason Molenda 245e8dce4dSJason Molenda using namespace lldb; 255e8dce4dSJason Molenda using namespace lldb_private; 265e8dce4dSJason Molenda 27c8064ac6SJason Molenda namespace lldb_private 28c8064ac6SJason Molenda { 29c8064ac6SJason Molenda 30c8064ac6SJason Molenda class QueueImpl 31c8064ac6SJason Molenda { 32c8064ac6SJason Molenda public: 33c8064ac6SJason Molenda QueueImpl () : 345e8dce4dSJason Molenda m_queue_wp(), 355e8dce4dSJason Molenda m_threads(), 365e8dce4dSJason Molenda m_thread_list_fetched(false), 372fd83355SJason Molenda m_pending_items(), 382fd83355SJason Molenda m_pending_items_fetched(false) 395e8dce4dSJason Molenda { 405e8dce4dSJason Molenda } 415e8dce4dSJason Molenda 42c8064ac6SJason Molenda QueueImpl (const lldb::QueueSP &queue_sp) : 43b97f44d9SJason Molenda m_queue_wp(), 445e8dce4dSJason Molenda m_threads(), 455e8dce4dSJason Molenda m_thread_list_fetched(false), 462fd83355SJason Molenda m_pending_items(), 472fd83355SJason Molenda m_pending_items_fetched(false) 485e8dce4dSJason Molenda { 49b97f44d9SJason Molenda m_queue_wp = queue_sp; 505e8dce4dSJason Molenda } 515e8dce4dSJason Molenda 52c8064ac6SJason Molenda QueueImpl (const QueueImpl &rhs) 535e8dce4dSJason Molenda { 54c8064ac6SJason Molenda if (&rhs == this) 55c8064ac6SJason Molenda return; 56c8064ac6SJason Molenda m_queue_wp = rhs.m_queue_wp; 57c8064ac6SJason Molenda m_threads = rhs.m_threads; 58c8064ac6SJason Molenda m_thread_list_fetched = rhs.m_thread_list_fetched; 592fd83355SJason Molenda m_pending_items = rhs.m_pending_items; 602fd83355SJason Molenda m_pending_items_fetched = rhs.m_pending_items_fetched; 61c8064ac6SJason Molenda } 62c8064ac6SJason Molenda 63c8064ac6SJason Molenda ~QueueImpl () 64c8064ac6SJason Molenda { 655e8dce4dSJason Molenda } 665e8dce4dSJason Molenda 675e8dce4dSJason Molenda bool 68c8064ac6SJason Molenda IsValid () 695e8dce4dSJason Molenda { 70c8064ac6SJason Molenda return m_queue_wp.lock() != NULL; 715e8dce4dSJason Molenda } 725e8dce4dSJason Molenda 735e8dce4dSJason Molenda void 74c8064ac6SJason Molenda Clear () 755e8dce4dSJason Molenda { 765e8dce4dSJason Molenda m_queue_wp.reset(); 775e8dce4dSJason Molenda m_thread_list_fetched = false; 785e8dce4dSJason Molenda m_threads.clear(); 792fd83355SJason Molenda m_pending_items_fetched = false; 802fd83355SJason Molenda m_pending_items.clear(); 815e8dce4dSJason Molenda } 825e8dce4dSJason Molenda 835e8dce4dSJason Molenda void 84c8064ac6SJason Molenda SetQueue (const lldb::QueueSP &queue_sp) 855e8dce4dSJason Molenda { 86c8064ac6SJason Molenda Clear(); 875e8dce4dSJason Molenda m_queue_wp = queue_sp; 885e8dce4dSJason Molenda } 895e8dce4dSJason Molenda 905e8dce4dSJason Molenda lldb::queue_id_t 91c8064ac6SJason Molenda GetQueueID () const 925e8dce4dSJason Molenda { 93c8064ac6SJason Molenda lldb::queue_id_t result = LLDB_INVALID_QUEUE_ID; 94c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 955e8dce4dSJason Molenda if (queue_sp) 965e8dce4dSJason Molenda { 975e8dce4dSJason Molenda result = queue_sp->GetID(); 985e8dce4dSJason Molenda } 995e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1005e8dce4dSJason Molenda if (log) 101*324a1036SSaleem Abdulrasool log->Printf ("SBQueue(%p)::GetQueueID () => 0x%" PRIx64, 102*324a1036SSaleem Abdulrasool static_cast<const void*>(this), result); 1035e8dce4dSJason Molenda return result; 1045e8dce4dSJason Molenda } 1055e8dce4dSJason Molenda 1065e8dce4dSJason Molenda uint32_t 107c8064ac6SJason Molenda GetIndexID () const 1085e8dce4dSJason Molenda { 1095e8dce4dSJason Molenda uint32_t result = LLDB_INVALID_INDEX32; 110c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 1115e8dce4dSJason Molenda if (queue_sp) 1125e8dce4dSJason Molenda { 1135e8dce4dSJason Molenda result = queue_sp->GetIndexID(); 1145e8dce4dSJason Molenda } 1155e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1165e8dce4dSJason Molenda if (log) 117*324a1036SSaleem Abdulrasool log->Printf ("SBQueueImpl(%p)::GetIndexID () => %d", 118*324a1036SSaleem Abdulrasool static_cast<const void*>(this), result); 1195e8dce4dSJason Molenda return result; 1205e8dce4dSJason Molenda } 1215e8dce4dSJason Molenda 1225e8dce4dSJason Molenda const char * 123c8064ac6SJason Molenda GetName () const 1245e8dce4dSJason Molenda { 1255e8dce4dSJason Molenda const char *name = NULL; 126c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock (); 1275e8dce4dSJason Molenda if (queue_sp.get()) 1285e8dce4dSJason Molenda { 1295e8dce4dSJason Molenda name = queue_sp->GetName(); 1305e8dce4dSJason Molenda } 1315e8dce4dSJason Molenda 1325e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1335e8dce4dSJason Molenda if (log) 134*324a1036SSaleem Abdulrasool log->Printf ("SBQueueImpl(%p)::GetName () => %s", 135*324a1036SSaleem Abdulrasool static_cast<const void*>(this), 136*324a1036SSaleem Abdulrasool name ? name : "NULL"); 1375e8dce4dSJason Molenda 1385e8dce4dSJason Molenda return name; 1395e8dce4dSJason Molenda } 1405e8dce4dSJason Molenda 1415e8dce4dSJason Molenda void 142c8064ac6SJason Molenda FetchThreads () 1435e8dce4dSJason Molenda { 1445e8dce4dSJason Molenda if (m_thread_list_fetched == false) 1455e8dce4dSJason Molenda { 146c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 1475e8dce4dSJason Molenda if (queue_sp) 1485e8dce4dSJason Molenda { 1495e8dce4dSJason Molenda Process::StopLocker stop_locker; 1505e8dce4dSJason Molenda if (stop_locker.TryLock (&queue_sp->GetProcess()->GetRunLock())) 1515e8dce4dSJason Molenda { 1525e8dce4dSJason Molenda const std::vector<ThreadSP> thread_list(queue_sp->GetThreads()); 1535e8dce4dSJason Molenda m_thread_list_fetched = true; 1545e8dce4dSJason Molenda const uint32_t num_threads = thread_list.size(); 1555e8dce4dSJason Molenda for (uint32_t idx = 0; idx < num_threads; ++idx) 1565e8dce4dSJason Molenda { 1575e8dce4dSJason Molenda ThreadSP thread_sp = thread_list[idx]; 1585e8dce4dSJason Molenda if (thread_sp && thread_sp->IsValid()) 1595e8dce4dSJason Molenda { 1605e8dce4dSJason Molenda m_threads.push_back (thread_sp); 1615e8dce4dSJason Molenda } 1625e8dce4dSJason Molenda } 1635e8dce4dSJason Molenda } 1645e8dce4dSJason Molenda } 1655e8dce4dSJason Molenda } 1665e8dce4dSJason Molenda } 1675e8dce4dSJason Molenda 1685e8dce4dSJason Molenda void 169c8064ac6SJason Molenda FetchItems () 1705e8dce4dSJason Molenda { 1712fd83355SJason Molenda if (m_pending_items_fetched == false) 1725e8dce4dSJason Molenda { 1735e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 1745e8dce4dSJason Molenda if (queue_sp) 1755e8dce4dSJason Molenda { 1765e8dce4dSJason Molenda Process::StopLocker stop_locker; 1775e8dce4dSJason Molenda if (stop_locker.TryLock (&queue_sp->GetProcess()->GetRunLock())) 1785e8dce4dSJason Molenda { 1792fd83355SJason Molenda const std::vector<QueueItemSP> queue_items(queue_sp->GetPendingItems()); 1802fd83355SJason Molenda m_pending_items_fetched = true; 1812fd83355SJason Molenda const uint32_t num_pending_items = queue_items.size(); 1822fd83355SJason Molenda for (uint32_t idx = 0; idx < num_pending_items; ++idx) 1835e8dce4dSJason Molenda { 1845e8dce4dSJason Molenda QueueItemSP item = queue_items[idx]; 1855e8dce4dSJason Molenda if (item && item->IsValid()) 1865e8dce4dSJason Molenda { 1872fd83355SJason Molenda m_pending_items.push_back (item); 1885e8dce4dSJason Molenda } 1895e8dce4dSJason Molenda } 1905e8dce4dSJason Molenda } 1915e8dce4dSJason Molenda } 1925e8dce4dSJason Molenda } 1935e8dce4dSJason Molenda } 1945e8dce4dSJason Molenda 1955e8dce4dSJason Molenda uint32_t 196c8064ac6SJason Molenda GetNumThreads () 1975e8dce4dSJason Molenda { 1985e8dce4dSJason Molenda uint32_t result = 0; 1995e8dce4dSJason Molenda 2005e8dce4dSJason Molenda FetchThreads(); 2015e8dce4dSJason Molenda if (m_thread_list_fetched) 2025e8dce4dSJason Molenda { 2035e8dce4dSJason Molenda result = m_threads.size(); 2045e8dce4dSJason Molenda } 2055e8dce4dSJason Molenda return result; 2065e8dce4dSJason Molenda } 2075e8dce4dSJason Molenda 208c8064ac6SJason Molenda lldb::SBThread 209c8064ac6SJason Molenda GetThreadAtIndex (uint32_t idx) 2105e8dce4dSJason Molenda { 2115e8dce4dSJason Molenda FetchThreads(); 2125e8dce4dSJason Molenda 2135e8dce4dSJason Molenda SBThread sb_thread; 2145e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 2155e8dce4dSJason Molenda if (queue_sp && idx < m_threads.size()) 2165e8dce4dSJason Molenda { 2175e8dce4dSJason Molenda ProcessSP process_sp = queue_sp->GetProcess(); 2185e8dce4dSJason Molenda if (process_sp) 2195e8dce4dSJason Molenda { 2205e8dce4dSJason Molenda ThreadSP thread_sp = m_threads[idx].lock(); 2215e8dce4dSJason Molenda if (thread_sp) 2225e8dce4dSJason Molenda { 2235e8dce4dSJason Molenda sb_thread.SetThread (thread_sp); 2245e8dce4dSJason Molenda } 2255e8dce4dSJason Molenda } 2265e8dce4dSJason Molenda } 2275e8dce4dSJason Molenda return sb_thread; 2285e8dce4dSJason Molenda } 2295e8dce4dSJason Molenda 2305e8dce4dSJason Molenda uint32_t 2312fd83355SJason Molenda GetNumPendingItems () 2325e8dce4dSJason Molenda { 2335e8dce4dSJason Molenda uint32_t result = 0; 2345e8dce4dSJason Molenda 235fe95dc95SJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 236fe95dc95SJason Molenda if (m_pending_items_fetched == false && queue_sp) 237fe95dc95SJason Molenda { 238fe95dc95SJason Molenda result = queue_sp->GetNumPendingWorkItems(); 239fe95dc95SJason Molenda } 240fe95dc95SJason Molenda else 2415e8dce4dSJason Molenda { 2422fd83355SJason Molenda result = m_pending_items.size(); 2435e8dce4dSJason Molenda } 2445e8dce4dSJason Molenda return result; 2455e8dce4dSJason Molenda } 2465e8dce4dSJason Molenda 247c8064ac6SJason Molenda lldb::SBQueueItem 2482fd83355SJason Molenda GetPendingItemAtIndex (uint32_t idx) 2495e8dce4dSJason Molenda { 2505e8dce4dSJason Molenda SBQueueItem result; 2515e8dce4dSJason Molenda FetchItems(); 2522fd83355SJason Molenda if (m_pending_items_fetched && idx < m_pending_items.size()) 2535e8dce4dSJason Molenda { 2542fd83355SJason Molenda result.SetQueueItem (m_pending_items[idx]); 2555e8dce4dSJason Molenda } 2565e8dce4dSJason Molenda return result; 2575e8dce4dSJason Molenda } 2585e8dce4dSJason Molenda 259fe95dc95SJason Molenda uint32_t 260fe95dc95SJason Molenda GetNumRunningItems () 261fe95dc95SJason Molenda { 262fe95dc95SJason Molenda uint32_t result = 0; 263fe95dc95SJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 264fe95dc95SJason Molenda if (queue_sp) 265fe95dc95SJason Molenda result = queue_sp->GetNumRunningWorkItems(); 266fe95dc95SJason Molenda return result; 267fe95dc95SJason Molenda } 268fe95dc95SJason Molenda 269c8064ac6SJason Molenda lldb::SBProcess 270c8064ac6SJason Molenda GetProcess () 2715e8dce4dSJason Molenda { 2725e8dce4dSJason Molenda SBProcess result; 2735e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 2745e8dce4dSJason Molenda if (queue_sp) 2755e8dce4dSJason Molenda { 2765e8dce4dSJason Molenda result.SetSP (queue_sp->GetProcess()); 2775e8dce4dSJason Molenda } 2785e8dce4dSJason Molenda return result; 2795e8dce4dSJason Molenda } 280c8064ac6SJason Molenda 281aac16e0fSJason Molenda lldb::QueueKind 282aac16e0fSJason Molenda GetKind () 283aac16e0fSJason Molenda { 284aac16e0fSJason Molenda lldb::QueueKind kind = eQueueKindUnknown; 285aac16e0fSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 286aac16e0fSJason Molenda if (queue_sp) 287aac16e0fSJason Molenda kind = queue_sp->GetKind(); 288aac16e0fSJason Molenda 289aac16e0fSJason Molenda return kind; 290aac16e0fSJason Molenda } 291aac16e0fSJason Molenda 292c8064ac6SJason Molenda private: 293c8064ac6SJason Molenda lldb::QueueWP m_queue_wp; 294c8064ac6SJason Molenda std::vector<lldb::ThreadWP> m_threads; // threads currently executing this queue's items 295c8064ac6SJason Molenda bool m_thread_list_fetched; // have we tried to fetch the threads list already? 2962fd83355SJason Molenda std::vector<lldb::QueueItemSP> m_pending_items; // items currently enqueued 2972fd83355SJason Molenda bool m_pending_items_fetched; // have we tried to fetch the item list already? 298c8064ac6SJason Molenda }; 299c8064ac6SJason Molenda 300c8064ac6SJason Molenda } 301c8064ac6SJason Molenda 302c8064ac6SJason Molenda SBQueue::SBQueue () : 303c8064ac6SJason Molenda m_opaque_sp (new QueueImpl()) 304c8064ac6SJason Molenda { 305c8064ac6SJason Molenda } 306c8064ac6SJason Molenda 307c8064ac6SJason Molenda SBQueue::SBQueue (const QueueSP& queue_sp) : 308c8064ac6SJason Molenda m_opaque_sp (new QueueImpl (queue_sp)) 309c8064ac6SJason Molenda { 310c8064ac6SJason Molenda } 311c8064ac6SJason Molenda 312c8064ac6SJason Molenda SBQueue::SBQueue (const SBQueue &rhs) 313c8064ac6SJason Molenda { 314c8064ac6SJason Molenda if (&rhs == this) 315c8064ac6SJason Molenda return; 316c8064ac6SJason Molenda 317c8064ac6SJason Molenda m_opaque_sp = rhs.m_opaque_sp; 318c8064ac6SJason Molenda } 319c8064ac6SJason Molenda 320c8064ac6SJason Molenda const lldb::SBQueue & 321c8064ac6SJason Molenda SBQueue::operator = (const lldb::SBQueue &rhs) 322c8064ac6SJason Molenda { 323c8064ac6SJason Molenda m_opaque_sp = rhs.m_opaque_sp; 324c8064ac6SJason Molenda return *this; 325c8064ac6SJason Molenda } 326c8064ac6SJason Molenda 327c8064ac6SJason Molenda SBQueue::~SBQueue() 328c8064ac6SJason Molenda { 329c8064ac6SJason Molenda } 330c8064ac6SJason Molenda 331c8064ac6SJason Molenda bool 332c8064ac6SJason Molenda SBQueue::IsValid() const 333c8064ac6SJason Molenda { 334ac605f4aSJason Molenda bool is_valid = m_opaque_sp->IsValid (); 335ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 336ac605f4aSJason Molenda if (log) 337ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::IsValid() == %s", m_opaque_sp->GetQueueID(), 338ac605f4aSJason Molenda is_valid ? "true" : "false"); 339ac605f4aSJason Molenda return is_valid; 340c8064ac6SJason Molenda } 341c8064ac6SJason Molenda 342c8064ac6SJason Molenda 343c8064ac6SJason Molenda void 344c8064ac6SJason Molenda SBQueue::Clear () 345c8064ac6SJason Molenda { 346ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 347ac605f4aSJason Molenda if (log) 348ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::Clear()", m_opaque_sp->GetQueueID()); 349c8064ac6SJason Molenda m_opaque_sp->Clear(); 350c8064ac6SJason Molenda } 351c8064ac6SJason Molenda 352c8064ac6SJason Molenda 353c8064ac6SJason Molenda void 354c8064ac6SJason Molenda SBQueue::SetQueue (const QueueSP& queue_sp) 355c8064ac6SJason Molenda { 356c8064ac6SJason Molenda m_opaque_sp->SetQueue (queue_sp); 357c8064ac6SJason Molenda } 358c8064ac6SJason Molenda 359c8064ac6SJason Molenda lldb::queue_id_t 360c8064ac6SJason Molenda SBQueue::GetQueueID () const 361c8064ac6SJason Molenda { 362ac605f4aSJason Molenda lldb::queue_id_t qid = m_opaque_sp->GetQueueID (); 363ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 364ac605f4aSJason Molenda if (log) 365ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetQueueID() == 0x%" PRIx64, m_opaque_sp->GetQueueID(), (uint64_t) qid); 366ac605f4aSJason Molenda return qid; 367c8064ac6SJason Molenda } 368c8064ac6SJason Molenda 369c8064ac6SJason Molenda uint32_t 370c8064ac6SJason Molenda SBQueue::GetIndexID () const 371c8064ac6SJason Molenda { 372ac605f4aSJason Molenda uint32_t index_id = m_opaque_sp->GetIndexID (); 373ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 374ac605f4aSJason Molenda if (log) 375ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetIndexID() == 0x%" PRIx32, m_opaque_sp->GetQueueID(), index_id); 376ac605f4aSJason Molenda return index_id; 377c8064ac6SJason Molenda } 378c8064ac6SJason Molenda 379c8064ac6SJason Molenda const char * 380c8064ac6SJason Molenda SBQueue::GetName () const 381c8064ac6SJason Molenda { 382ac605f4aSJason Molenda const char *name = m_opaque_sp->GetName (); 383ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 384ac605f4aSJason Molenda if (log) 385ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetName() == %s", m_opaque_sp->GetQueueID(), 386ac605f4aSJason Molenda name ? name : ""); 387ac605f4aSJason Molenda return name; 388c8064ac6SJason Molenda } 389c8064ac6SJason Molenda 390c8064ac6SJason Molenda uint32_t 391c8064ac6SJason Molenda SBQueue::GetNumThreads () 392c8064ac6SJason Molenda { 393ac605f4aSJason Molenda uint32_t numthreads = m_opaque_sp->GetNumThreads (); 394ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 395ac605f4aSJason Molenda if (log) 396ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumThreads() == %d", m_opaque_sp->GetQueueID(), numthreads); 397ac605f4aSJason Molenda return numthreads; 398c8064ac6SJason Molenda } 399c8064ac6SJason Molenda 400c8064ac6SJason Molenda SBThread 401c8064ac6SJason Molenda SBQueue::GetThreadAtIndex (uint32_t idx) 402c8064ac6SJason Molenda { 403ac605f4aSJason Molenda SBThread th = m_opaque_sp->GetThreadAtIndex (idx); 404ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 405ac605f4aSJason Molenda if (log) 406ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetThreadAtIndex(%d)", m_opaque_sp->GetQueueID(), idx); 407ac605f4aSJason Molenda return th; 408c8064ac6SJason Molenda } 409c8064ac6SJason Molenda 410c8064ac6SJason Molenda 411c8064ac6SJason Molenda uint32_t 4122fd83355SJason Molenda SBQueue::GetNumPendingItems () 413c8064ac6SJason Molenda { 414ac605f4aSJason Molenda uint32_t pending_items = m_opaque_sp->GetNumPendingItems (); 415ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 416ac605f4aSJason Molenda if (log) 417ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumPendingItems() == %d", m_opaque_sp->GetQueueID(), pending_items); 418ac605f4aSJason Molenda return pending_items; 419c8064ac6SJason Molenda } 420c8064ac6SJason Molenda 421c8064ac6SJason Molenda SBQueueItem 4222fd83355SJason Molenda SBQueue::GetPendingItemAtIndex (uint32_t idx) 423c8064ac6SJason Molenda { 424ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 425ac605f4aSJason Molenda if (log) 426ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetPendingItemAtIndex(%d)", m_opaque_sp->GetQueueID(), idx); 4272fd83355SJason Molenda return m_opaque_sp->GetPendingItemAtIndex (idx); 428c8064ac6SJason Molenda } 429c8064ac6SJason Molenda 430fe95dc95SJason Molenda uint32_t 431fe95dc95SJason Molenda SBQueue::GetNumRunningItems () 432fe95dc95SJason Molenda { 433fe95dc95SJason Molenda uint32_t running_items = m_opaque_sp->GetNumRunningItems (); 434fe95dc95SJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 435fe95dc95SJason Molenda if (log) 436fe95dc95SJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumRunningItems() == %d", m_opaque_sp->GetQueueID(), running_items); 437fe95dc95SJason Molenda return running_items; 438fe95dc95SJason Molenda } 439fe95dc95SJason Molenda 440c8064ac6SJason Molenda SBProcess 441c8064ac6SJason Molenda SBQueue::GetProcess () 442c8064ac6SJason Molenda { 443c8064ac6SJason Molenda return m_opaque_sp->GetProcess(); 444c8064ac6SJason Molenda } 445aac16e0fSJason Molenda 446aac16e0fSJason Molenda lldb::QueueKind 447aac16e0fSJason Molenda SBQueue::GetKind () 448aac16e0fSJason Molenda { 449aac16e0fSJason Molenda return m_opaque_sp->GetKind(); 450aac16e0fSJason Molenda } 451