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) 1015e8dce4dSJason Molenda log->Printf ("SBQueue(%p)::GetQueueID () => 0x%" PRIx64, this, result); 1025e8dce4dSJason Molenda return result; 1035e8dce4dSJason Molenda } 1045e8dce4dSJason Molenda 1055e8dce4dSJason Molenda uint32_t 106c8064ac6SJason Molenda GetIndexID () const 1075e8dce4dSJason Molenda { 1085e8dce4dSJason Molenda uint32_t result = LLDB_INVALID_INDEX32; 109c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 1105e8dce4dSJason Molenda if (queue_sp) 1115e8dce4dSJason Molenda { 1125e8dce4dSJason Molenda result = queue_sp->GetIndexID(); 1135e8dce4dSJason Molenda } 1145e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1155e8dce4dSJason Molenda if (log) 116c8064ac6SJason Molenda log->Printf ("SBQueueImpl(%p)::GetIndexID () => %d", this, result); 1175e8dce4dSJason Molenda return result; 1185e8dce4dSJason Molenda } 1195e8dce4dSJason Molenda 1205e8dce4dSJason Molenda const char * 121c8064ac6SJason Molenda GetName () const 1225e8dce4dSJason Molenda { 1235e8dce4dSJason Molenda const char *name = NULL; 124c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock (); 1255e8dce4dSJason Molenda if (queue_sp.get()) 1265e8dce4dSJason Molenda { 1275e8dce4dSJason Molenda name = queue_sp->GetName(); 1285e8dce4dSJason Molenda } 1295e8dce4dSJason Molenda 1305e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1315e8dce4dSJason Molenda if (log) 132c8064ac6SJason Molenda log->Printf ("SBQueueImpl(%p)::GetName () => %s", this, name ? name : "NULL"); 1335e8dce4dSJason Molenda 1345e8dce4dSJason Molenda return name; 1355e8dce4dSJason Molenda } 1365e8dce4dSJason Molenda 1375e8dce4dSJason Molenda void 138c8064ac6SJason Molenda FetchThreads () 1395e8dce4dSJason Molenda { 1405e8dce4dSJason Molenda if (m_thread_list_fetched == false) 1415e8dce4dSJason Molenda { 142c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 1435e8dce4dSJason Molenda if (queue_sp) 1445e8dce4dSJason Molenda { 1455e8dce4dSJason Molenda Process::StopLocker stop_locker; 1465e8dce4dSJason Molenda if (stop_locker.TryLock (&queue_sp->GetProcess()->GetRunLock())) 1475e8dce4dSJason Molenda { 1485e8dce4dSJason Molenda const std::vector<ThreadSP> thread_list(queue_sp->GetThreads()); 1495e8dce4dSJason Molenda m_thread_list_fetched = true; 1505e8dce4dSJason Molenda const uint32_t num_threads = thread_list.size(); 1515e8dce4dSJason Molenda for (uint32_t idx = 0; idx < num_threads; ++idx) 1525e8dce4dSJason Molenda { 1535e8dce4dSJason Molenda ThreadSP thread_sp = thread_list[idx]; 1545e8dce4dSJason Molenda if (thread_sp && thread_sp->IsValid()) 1555e8dce4dSJason Molenda { 1565e8dce4dSJason Molenda m_threads.push_back (thread_sp); 1575e8dce4dSJason Molenda } 1585e8dce4dSJason Molenda } 1595e8dce4dSJason Molenda } 1605e8dce4dSJason Molenda } 1615e8dce4dSJason Molenda } 1625e8dce4dSJason Molenda } 1635e8dce4dSJason Molenda 1645e8dce4dSJason Molenda void 165c8064ac6SJason Molenda FetchItems () 1665e8dce4dSJason Molenda { 1672fd83355SJason Molenda if (m_pending_items_fetched == false) 1685e8dce4dSJason Molenda { 1695e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 1705e8dce4dSJason Molenda if (queue_sp) 1715e8dce4dSJason Molenda { 1725e8dce4dSJason Molenda Process::StopLocker stop_locker; 1735e8dce4dSJason Molenda if (stop_locker.TryLock (&queue_sp->GetProcess()->GetRunLock())) 1745e8dce4dSJason Molenda { 1752fd83355SJason Molenda const std::vector<QueueItemSP> queue_items(queue_sp->GetPendingItems()); 1762fd83355SJason Molenda m_pending_items_fetched = true; 1772fd83355SJason Molenda const uint32_t num_pending_items = queue_items.size(); 1782fd83355SJason Molenda for (uint32_t idx = 0; idx < num_pending_items; ++idx) 1795e8dce4dSJason Molenda { 1805e8dce4dSJason Molenda QueueItemSP item = queue_items[idx]; 1815e8dce4dSJason Molenda if (item && item->IsValid()) 1825e8dce4dSJason Molenda { 1832fd83355SJason Molenda m_pending_items.push_back (item); 1845e8dce4dSJason Molenda } 1855e8dce4dSJason Molenda } 1865e8dce4dSJason Molenda } 1875e8dce4dSJason Molenda } 1885e8dce4dSJason Molenda } 1895e8dce4dSJason Molenda } 1905e8dce4dSJason Molenda 1915e8dce4dSJason Molenda uint32_t 192c8064ac6SJason Molenda GetNumThreads () 1935e8dce4dSJason Molenda { 1945e8dce4dSJason Molenda uint32_t result = 0; 1955e8dce4dSJason Molenda 1965e8dce4dSJason Molenda FetchThreads(); 1975e8dce4dSJason Molenda if (m_thread_list_fetched) 1985e8dce4dSJason Molenda { 1995e8dce4dSJason Molenda result = m_threads.size(); 2005e8dce4dSJason Molenda } 2015e8dce4dSJason Molenda return result; 2025e8dce4dSJason Molenda } 2035e8dce4dSJason Molenda 204c8064ac6SJason Molenda lldb::SBThread 205c8064ac6SJason Molenda GetThreadAtIndex (uint32_t idx) 2065e8dce4dSJason Molenda { 2075e8dce4dSJason Molenda FetchThreads(); 2085e8dce4dSJason Molenda 2095e8dce4dSJason Molenda SBThread sb_thread; 2105e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 2115e8dce4dSJason Molenda if (queue_sp && idx < m_threads.size()) 2125e8dce4dSJason Molenda { 2135e8dce4dSJason Molenda ProcessSP process_sp = queue_sp->GetProcess(); 2145e8dce4dSJason Molenda if (process_sp) 2155e8dce4dSJason Molenda { 2165e8dce4dSJason Molenda ThreadSP thread_sp = m_threads[idx].lock(); 2175e8dce4dSJason Molenda if (thread_sp) 2185e8dce4dSJason Molenda { 2195e8dce4dSJason Molenda sb_thread.SetThread (thread_sp); 2205e8dce4dSJason Molenda } 2215e8dce4dSJason Molenda } 2225e8dce4dSJason Molenda } 2235e8dce4dSJason Molenda return sb_thread; 2245e8dce4dSJason Molenda } 2255e8dce4dSJason Molenda 2265e8dce4dSJason Molenda uint32_t 2272fd83355SJason Molenda GetNumPendingItems () 2285e8dce4dSJason Molenda { 2295e8dce4dSJason Molenda uint32_t result = 0; 2305e8dce4dSJason Molenda 231*fe95dc95SJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 232*fe95dc95SJason Molenda if (m_pending_items_fetched == false && queue_sp) 233*fe95dc95SJason Molenda { 234*fe95dc95SJason Molenda result = queue_sp->GetNumPendingWorkItems(); 235*fe95dc95SJason Molenda } 236*fe95dc95SJason Molenda else 2375e8dce4dSJason Molenda { 2382fd83355SJason Molenda result = m_pending_items.size(); 2395e8dce4dSJason Molenda } 2405e8dce4dSJason Molenda return result; 2415e8dce4dSJason Molenda } 2425e8dce4dSJason Molenda 243c8064ac6SJason Molenda lldb::SBQueueItem 2442fd83355SJason Molenda GetPendingItemAtIndex (uint32_t idx) 2455e8dce4dSJason Molenda { 2465e8dce4dSJason Molenda SBQueueItem result; 2475e8dce4dSJason Molenda FetchItems(); 2482fd83355SJason Molenda if (m_pending_items_fetched && idx < m_pending_items.size()) 2495e8dce4dSJason Molenda { 2502fd83355SJason Molenda result.SetQueueItem (m_pending_items[idx]); 2515e8dce4dSJason Molenda } 2525e8dce4dSJason Molenda return result; 2535e8dce4dSJason Molenda } 2545e8dce4dSJason Molenda 255*fe95dc95SJason Molenda uint32_t 256*fe95dc95SJason Molenda GetNumRunningItems () 257*fe95dc95SJason Molenda { 258*fe95dc95SJason Molenda uint32_t result = 0; 259*fe95dc95SJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 260*fe95dc95SJason Molenda if (queue_sp) 261*fe95dc95SJason Molenda result = queue_sp->GetNumRunningWorkItems(); 262*fe95dc95SJason Molenda return result; 263*fe95dc95SJason Molenda } 264*fe95dc95SJason Molenda 265c8064ac6SJason Molenda lldb::SBProcess 266c8064ac6SJason Molenda GetProcess () 2675e8dce4dSJason Molenda { 2685e8dce4dSJason Molenda SBProcess result; 2695e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 2705e8dce4dSJason Molenda if (queue_sp) 2715e8dce4dSJason Molenda { 2725e8dce4dSJason Molenda result.SetSP (queue_sp->GetProcess()); 2735e8dce4dSJason Molenda } 2745e8dce4dSJason Molenda return result; 2755e8dce4dSJason Molenda } 276c8064ac6SJason Molenda 277c8064ac6SJason Molenda private: 278c8064ac6SJason Molenda lldb::QueueWP m_queue_wp; 279c8064ac6SJason Molenda std::vector<lldb::ThreadWP> m_threads; // threads currently executing this queue's items 280c8064ac6SJason Molenda bool m_thread_list_fetched; // have we tried to fetch the threads list already? 2812fd83355SJason Molenda std::vector<lldb::QueueItemSP> m_pending_items; // items currently enqueued 2822fd83355SJason Molenda bool m_pending_items_fetched; // have we tried to fetch the item list already? 283c8064ac6SJason Molenda }; 284c8064ac6SJason Molenda 285c8064ac6SJason Molenda } 286c8064ac6SJason Molenda 287c8064ac6SJason Molenda SBQueue::SBQueue () : 288c8064ac6SJason Molenda m_opaque_sp (new QueueImpl()) 289c8064ac6SJason Molenda { 290c8064ac6SJason Molenda } 291c8064ac6SJason Molenda 292c8064ac6SJason Molenda SBQueue::SBQueue (const QueueSP& queue_sp) : 293c8064ac6SJason Molenda m_opaque_sp (new QueueImpl (queue_sp)) 294c8064ac6SJason Molenda { 295c8064ac6SJason Molenda } 296c8064ac6SJason Molenda 297c8064ac6SJason Molenda SBQueue::SBQueue (const SBQueue &rhs) 298c8064ac6SJason Molenda { 299c8064ac6SJason Molenda if (&rhs == this) 300c8064ac6SJason Molenda return; 301c8064ac6SJason Molenda 302c8064ac6SJason Molenda m_opaque_sp = rhs.m_opaque_sp; 303c8064ac6SJason Molenda } 304c8064ac6SJason Molenda 305c8064ac6SJason Molenda const lldb::SBQueue & 306c8064ac6SJason Molenda SBQueue::operator = (const lldb::SBQueue &rhs) 307c8064ac6SJason Molenda { 308c8064ac6SJason Molenda m_opaque_sp = rhs.m_opaque_sp; 309c8064ac6SJason Molenda return *this; 310c8064ac6SJason Molenda } 311c8064ac6SJason Molenda 312c8064ac6SJason Molenda SBQueue::~SBQueue() 313c8064ac6SJason Molenda { 314c8064ac6SJason Molenda } 315c8064ac6SJason Molenda 316c8064ac6SJason Molenda bool 317c8064ac6SJason Molenda SBQueue::IsValid() const 318c8064ac6SJason Molenda { 319ac605f4aSJason Molenda bool is_valid = m_opaque_sp->IsValid (); 320ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 321ac605f4aSJason Molenda if (log) 322ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::IsValid() == %s", m_opaque_sp->GetQueueID(), 323ac605f4aSJason Molenda is_valid ? "true" : "false"); 324ac605f4aSJason Molenda return is_valid; 325c8064ac6SJason Molenda } 326c8064ac6SJason Molenda 327c8064ac6SJason Molenda 328c8064ac6SJason Molenda void 329c8064ac6SJason Molenda SBQueue::Clear () 330c8064ac6SJason Molenda { 331ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 332ac605f4aSJason Molenda if (log) 333ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::Clear()", m_opaque_sp->GetQueueID()); 334c8064ac6SJason Molenda m_opaque_sp->Clear(); 335c8064ac6SJason Molenda } 336c8064ac6SJason Molenda 337c8064ac6SJason Molenda 338c8064ac6SJason Molenda void 339c8064ac6SJason Molenda SBQueue::SetQueue (const QueueSP& queue_sp) 340c8064ac6SJason Molenda { 341c8064ac6SJason Molenda m_opaque_sp->SetQueue (queue_sp); 342c8064ac6SJason Molenda } 343c8064ac6SJason Molenda 344c8064ac6SJason Molenda lldb::queue_id_t 345c8064ac6SJason Molenda SBQueue::GetQueueID () const 346c8064ac6SJason Molenda { 347ac605f4aSJason Molenda lldb::queue_id_t qid = m_opaque_sp->GetQueueID (); 348ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 349ac605f4aSJason Molenda if (log) 350ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetQueueID() == 0x%" PRIx64, m_opaque_sp->GetQueueID(), (uint64_t) qid); 351ac605f4aSJason Molenda return qid; 352c8064ac6SJason Molenda } 353c8064ac6SJason Molenda 354c8064ac6SJason Molenda uint32_t 355c8064ac6SJason Molenda SBQueue::GetIndexID () const 356c8064ac6SJason Molenda { 357ac605f4aSJason Molenda uint32_t index_id = m_opaque_sp->GetIndexID (); 358ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 359ac605f4aSJason Molenda if (log) 360ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetIndexID() == 0x%" PRIx32, m_opaque_sp->GetQueueID(), index_id); 361ac605f4aSJason Molenda return index_id; 362c8064ac6SJason Molenda } 363c8064ac6SJason Molenda 364c8064ac6SJason Molenda const char * 365c8064ac6SJason Molenda SBQueue::GetName () const 366c8064ac6SJason Molenda { 367ac605f4aSJason Molenda const char *name = m_opaque_sp->GetName (); 368ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 369ac605f4aSJason Molenda if (log) 370ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetName() == %s", m_opaque_sp->GetQueueID(), 371ac605f4aSJason Molenda name ? name : ""); 372ac605f4aSJason Molenda return name; 373c8064ac6SJason Molenda } 374c8064ac6SJason Molenda 375c8064ac6SJason Molenda uint32_t 376c8064ac6SJason Molenda SBQueue::GetNumThreads () 377c8064ac6SJason Molenda { 378ac605f4aSJason Molenda uint32_t numthreads = m_opaque_sp->GetNumThreads (); 379ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 380ac605f4aSJason Molenda if (log) 381ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumThreads() == %d", m_opaque_sp->GetQueueID(), numthreads); 382ac605f4aSJason Molenda return numthreads; 383c8064ac6SJason Molenda } 384c8064ac6SJason Molenda 385c8064ac6SJason Molenda SBThread 386c8064ac6SJason Molenda SBQueue::GetThreadAtIndex (uint32_t idx) 387c8064ac6SJason Molenda { 388ac605f4aSJason Molenda SBThread th = m_opaque_sp->GetThreadAtIndex (idx); 389ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 390ac605f4aSJason Molenda if (log) 391ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetThreadAtIndex(%d)", m_opaque_sp->GetQueueID(), idx); 392ac605f4aSJason Molenda return th; 393c8064ac6SJason Molenda } 394c8064ac6SJason Molenda 395c8064ac6SJason Molenda 396c8064ac6SJason Molenda uint32_t 3972fd83355SJason Molenda SBQueue::GetNumPendingItems () 398c8064ac6SJason Molenda { 399ac605f4aSJason Molenda uint32_t pending_items = m_opaque_sp->GetNumPendingItems (); 400ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 401ac605f4aSJason Molenda if (log) 402ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumPendingItems() == %d", m_opaque_sp->GetQueueID(), pending_items); 403ac605f4aSJason Molenda return pending_items; 404c8064ac6SJason Molenda } 405c8064ac6SJason Molenda 406c8064ac6SJason Molenda SBQueueItem 4072fd83355SJason Molenda SBQueue::GetPendingItemAtIndex (uint32_t idx) 408c8064ac6SJason Molenda { 409ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 410ac605f4aSJason Molenda if (log) 411ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetPendingItemAtIndex(%d)", m_opaque_sp->GetQueueID(), idx); 4122fd83355SJason Molenda return m_opaque_sp->GetPendingItemAtIndex (idx); 413c8064ac6SJason Molenda } 414c8064ac6SJason Molenda 415*fe95dc95SJason Molenda uint32_t 416*fe95dc95SJason Molenda SBQueue::GetNumRunningItems () 417*fe95dc95SJason Molenda { 418*fe95dc95SJason Molenda uint32_t running_items = m_opaque_sp->GetNumRunningItems (); 419*fe95dc95SJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 420*fe95dc95SJason Molenda if (log) 421*fe95dc95SJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumRunningItems() == %d", m_opaque_sp->GetQueueID(), running_items); 422*fe95dc95SJason Molenda return running_items; 423*fe95dc95SJason Molenda } 424*fe95dc95SJason Molenda 425c8064ac6SJason Molenda SBProcess 426c8064ac6SJason Molenda SBQueue::GetProcess () 427c8064ac6SJason Molenda { 428c8064ac6SJason Molenda return m_opaque_sp->GetProcess(); 429c8064ac6SJason Molenda } 430