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" 18*b9ffa98cSJason Molenda #include "lldb/API/SBQueueItem.h" 19*b9ffa98cSJason Molenda 205e8dce4dSJason Molenda #include "lldb/Core/Log.h" 215e8dce4dSJason Molenda #include "lldb/Target/Process.h" 225e8dce4dSJason Molenda #include "lldb/Target/Queue.h" 235e8dce4dSJason Molenda #include "lldb/Target/QueueItem.h" 245e8dce4dSJason Molenda #include "lldb/Target/Thread.h" 255e8dce4dSJason Molenda 265e8dce4dSJason Molenda using namespace lldb; 275e8dce4dSJason Molenda using namespace lldb_private; 285e8dce4dSJason Molenda 29c8064ac6SJason Molenda namespace lldb_private 30c8064ac6SJason Molenda { 31c8064ac6SJason Molenda 32c8064ac6SJason Molenda class QueueImpl 33c8064ac6SJason Molenda { 34c8064ac6SJason Molenda public: 35c8064ac6SJason Molenda QueueImpl () : 365e8dce4dSJason Molenda m_queue_wp(), 375e8dce4dSJason Molenda m_threads(), 385e8dce4dSJason Molenda m_thread_list_fetched(false), 392fd83355SJason Molenda m_pending_items(), 402fd83355SJason Molenda m_pending_items_fetched(false) 415e8dce4dSJason Molenda { 425e8dce4dSJason Molenda } 435e8dce4dSJason Molenda 44c8064ac6SJason Molenda QueueImpl (const lldb::QueueSP &queue_sp) : 45b97f44d9SJason Molenda m_queue_wp(), 465e8dce4dSJason Molenda m_threads(), 475e8dce4dSJason Molenda m_thread_list_fetched(false), 482fd83355SJason Molenda m_pending_items(), 492fd83355SJason Molenda m_pending_items_fetched(false) 505e8dce4dSJason Molenda { 51b97f44d9SJason Molenda m_queue_wp = queue_sp; 525e8dce4dSJason Molenda } 535e8dce4dSJason Molenda 54c8064ac6SJason Molenda QueueImpl (const QueueImpl &rhs) 555e8dce4dSJason Molenda { 56c8064ac6SJason Molenda if (&rhs == this) 57c8064ac6SJason Molenda return; 58c8064ac6SJason Molenda m_queue_wp = rhs.m_queue_wp; 59c8064ac6SJason Molenda m_threads = rhs.m_threads; 60c8064ac6SJason Molenda m_thread_list_fetched = rhs.m_thread_list_fetched; 612fd83355SJason Molenda m_pending_items = rhs.m_pending_items; 622fd83355SJason Molenda m_pending_items_fetched = rhs.m_pending_items_fetched; 63c8064ac6SJason Molenda } 64c8064ac6SJason Molenda 65c8064ac6SJason Molenda ~QueueImpl () 66c8064ac6SJason Molenda { 675e8dce4dSJason Molenda } 685e8dce4dSJason Molenda 695e8dce4dSJason Molenda bool 70c8064ac6SJason Molenda IsValid () 715e8dce4dSJason Molenda { 72c8064ac6SJason Molenda return m_queue_wp.lock() != NULL; 735e8dce4dSJason Molenda } 745e8dce4dSJason Molenda 755e8dce4dSJason Molenda void 76c8064ac6SJason Molenda Clear () 775e8dce4dSJason Molenda { 785e8dce4dSJason Molenda m_queue_wp.reset(); 795e8dce4dSJason Molenda m_thread_list_fetched = false; 805e8dce4dSJason Molenda m_threads.clear(); 812fd83355SJason Molenda m_pending_items_fetched = false; 822fd83355SJason Molenda m_pending_items.clear(); 835e8dce4dSJason Molenda } 845e8dce4dSJason Molenda 855e8dce4dSJason Molenda void 86c8064ac6SJason Molenda SetQueue (const lldb::QueueSP &queue_sp) 875e8dce4dSJason Molenda { 88c8064ac6SJason Molenda Clear(); 895e8dce4dSJason Molenda m_queue_wp = queue_sp; 905e8dce4dSJason Molenda } 915e8dce4dSJason Molenda 925e8dce4dSJason Molenda lldb::queue_id_t 93c8064ac6SJason Molenda GetQueueID () const 945e8dce4dSJason Molenda { 95c8064ac6SJason Molenda lldb::queue_id_t result = LLDB_INVALID_QUEUE_ID; 96c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 975e8dce4dSJason Molenda if (queue_sp) 985e8dce4dSJason Molenda { 995e8dce4dSJason Molenda result = queue_sp->GetID(); 1005e8dce4dSJason Molenda } 1015e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1025e8dce4dSJason Molenda if (log) 103324a1036SSaleem Abdulrasool log->Printf ("SBQueue(%p)::GetQueueID () => 0x%" PRIx64, 104324a1036SSaleem Abdulrasool static_cast<const void*>(this), result); 1055e8dce4dSJason Molenda return result; 1065e8dce4dSJason Molenda } 1075e8dce4dSJason Molenda 1085e8dce4dSJason Molenda uint32_t 109c8064ac6SJason Molenda GetIndexID () const 1105e8dce4dSJason Molenda { 1115e8dce4dSJason Molenda uint32_t result = LLDB_INVALID_INDEX32; 112c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 1135e8dce4dSJason Molenda if (queue_sp) 1145e8dce4dSJason Molenda { 1155e8dce4dSJason Molenda result = queue_sp->GetIndexID(); 1165e8dce4dSJason Molenda } 1175e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1185e8dce4dSJason Molenda if (log) 119324a1036SSaleem Abdulrasool log->Printf ("SBQueueImpl(%p)::GetIndexID () => %d", 120324a1036SSaleem Abdulrasool static_cast<const void*>(this), result); 1215e8dce4dSJason Molenda return result; 1225e8dce4dSJason Molenda } 1235e8dce4dSJason Molenda 1245e8dce4dSJason Molenda const char * 125c8064ac6SJason Molenda GetName () const 1265e8dce4dSJason Molenda { 1275e8dce4dSJason Molenda const char *name = NULL; 128c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock (); 1295e8dce4dSJason Molenda if (queue_sp.get()) 1305e8dce4dSJason Molenda { 1315e8dce4dSJason Molenda name = queue_sp->GetName(); 1325e8dce4dSJason Molenda } 1335e8dce4dSJason Molenda 1345e8dce4dSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1355e8dce4dSJason Molenda if (log) 136324a1036SSaleem Abdulrasool log->Printf ("SBQueueImpl(%p)::GetName () => %s", 137324a1036SSaleem Abdulrasool static_cast<const void*>(this), 138324a1036SSaleem Abdulrasool name ? name : "NULL"); 1395e8dce4dSJason Molenda 1405e8dce4dSJason Molenda return name; 1415e8dce4dSJason Molenda } 1425e8dce4dSJason Molenda 1435e8dce4dSJason Molenda void 144c8064ac6SJason Molenda FetchThreads () 1455e8dce4dSJason Molenda { 1465e8dce4dSJason Molenda if (m_thread_list_fetched == false) 1475e8dce4dSJason Molenda { 148c8064ac6SJason Molenda lldb::QueueSP queue_sp = m_queue_wp.lock(); 1495e8dce4dSJason Molenda if (queue_sp) 1505e8dce4dSJason Molenda { 1515e8dce4dSJason Molenda Process::StopLocker stop_locker; 1525e8dce4dSJason Molenda if (stop_locker.TryLock (&queue_sp->GetProcess()->GetRunLock())) 1535e8dce4dSJason Molenda { 1545e8dce4dSJason Molenda const std::vector<ThreadSP> thread_list(queue_sp->GetThreads()); 1555e8dce4dSJason Molenda m_thread_list_fetched = true; 1565e8dce4dSJason Molenda const uint32_t num_threads = thread_list.size(); 1575e8dce4dSJason Molenda for (uint32_t idx = 0; idx < num_threads; ++idx) 1585e8dce4dSJason Molenda { 1595e8dce4dSJason Molenda ThreadSP thread_sp = thread_list[idx]; 1605e8dce4dSJason Molenda if (thread_sp && thread_sp->IsValid()) 1615e8dce4dSJason Molenda { 1625e8dce4dSJason Molenda m_threads.push_back (thread_sp); 1635e8dce4dSJason Molenda } 1645e8dce4dSJason Molenda } 1655e8dce4dSJason Molenda } 1665e8dce4dSJason Molenda } 1675e8dce4dSJason Molenda } 1685e8dce4dSJason Molenda } 1695e8dce4dSJason Molenda 1705e8dce4dSJason Molenda void 171c8064ac6SJason Molenda FetchItems () 1725e8dce4dSJason Molenda { 1732fd83355SJason Molenda if (m_pending_items_fetched == false) 1745e8dce4dSJason Molenda { 1755e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 1765e8dce4dSJason Molenda if (queue_sp) 1775e8dce4dSJason Molenda { 1785e8dce4dSJason Molenda Process::StopLocker stop_locker; 1795e8dce4dSJason Molenda if (stop_locker.TryLock (&queue_sp->GetProcess()->GetRunLock())) 1805e8dce4dSJason Molenda { 1812fd83355SJason Molenda const std::vector<QueueItemSP> queue_items(queue_sp->GetPendingItems()); 1822fd83355SJason Molenda m_pending_items_fetched = true; 1832fd83355SJason Molenda const uint32_t num_pending_items = queue_items.size(); 1842fd83355SJason Molenda for (uint32_t idx = 0; idx < num_pending_items; ++idx) 1855e8dce4dSJason Molenda { 1865e8dce4dSJason Molenda QueueItemSP item = queue_items[idx]; 1875e8dce4dSJason Molenda if (item && item->IsValid()) 1885e8dce4dSJason Molenda { 1892fd83355SJason Molenda m_pending_items.push_back (item); 1905e8dce4dSJason Molenda } 1915e8dce4dSJason Molenda } 1925e8dce4dSJason Molenda } 1935e8dce4dSJason Molenda } 1945e8dce4dSJason Molenda } 1955e8dce4dSJason Molenda } 1965e8dce4dSJason Molenda 1975e8dce4dSJason Molenda uint32_t 198c8064ac6SJason Molenda GetNumThreads () 1995e8dce4dSJason Molenda { 2005e8dce4dSJason Molenda uint32_t result = 0; 2015e8dce4dSJason Molenda 2025e8dce4dSJason Molenda FetchThreads(); 2035e8dce4dSJason Molenda if (m_thread_list_fetched) 2045e8dce4dSJason Molenda { 2055e8dce4dSJason Molenda result = m_threads.size(); 2065e8dce4dSJason Molenda } 2075e8dce4dSJason Molenda return result; 2085e8dce4dSJason Molenda } 2095e8dce4dSJason Molenda 210c8064ac6SJason Molenda lldb::SBThread 211c8064ac6SJason Molenda GetThreadAtIndex (uint32_t idx) 2125e8dce4dSJason Molenda { 2135e8dce4dSJason Molenda FetchThreads(); 2145e8dce4dSJason Molenda 2155e8dce4dSJason Molenda SBThread sb_thread; 2165e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 2175e8dce4dSJason Molenda if (queue_sp && idx < m_threads.size()) 2185e8dce4dSJason Molenda { 2195e8dce4dSJason Molenda ProcessSP process_sp = queue_sp->GetProcess(); 2205e8dce4dSJason Molenda if (process_sp) 2215e8dce4dSJason Molenda { 2225e8dce4dSJason Molenda ThreadSP thread_sp = m_threads[idx].lock(); 2235e8dce4dSJason Molenda if (thread_sp) 2245e8dce4dSJason Molenda { 2255e8dce4dSJason Molenda sb_thread.SetThread (thread_sp); 2265e8dce4dSJason Molenda } 2275e8dce4dSJason Molenda } 2285e8dce4dSJason Molenda } 2295e8dce4dSJason Molenda return sb_thread; 2305e8dce4dSJason Molenda } 2315e8dce4dSJason Molenda 2325e8dce4dSJason Molenda uint32_t 2332fd83355SJason Molenda GetNumPendingItems () 2345e8dce4dSJason Molenda { 2355e8dce4dSJason Molenda uint32_t result = 0; 2365e8dce4dSJason Molenda 237fe95dc95SJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 238fe95dc95SJason Molenda if (m_pending_items_fetched == false && queue_sp) 239fe95dc95SJason Molenda { 240fe95dc95SJason Molenda result = queue_sp->GetNumPendingWorkItems(); 241fe95dc95SJason Molenda } 242fe95dc95SJason Molenda else 2435e8dce4dSJason Molenda { 2442fd83355SJason Molenda result = m_pending_items.size(); 2455e8dce4dSJason Molenda } 2465e8dce4dSJason Molenda return result; 2475e8dce4dSJason Molenda } 2485e8dce4dSJason Molenda 249c8064ac6SJason Molenda lldb::SBQueueItem 2502fd83355SJason Molenda GetPendingItemAtIndex (uint32_t idx) 2515e8dce4dSJason Molenda { 2525e8dce4dSJason Molenda SBQueueItem result; 2535e8dce4dSJason Molenda FetchItems(); 2542fd83355SJason Molenda if (m_pending_items_fetched && idx < m_pending_items.size()) 2555e8dce4dSJason Molenda { 2562fd83355SJason Molenda result.SetQueueItem (m_pending_items[idx]); 2575e8dce4dSJason Molenda } 2585e8dce4dSJason Molenda return result; 2595e8dce4dSJason Molenda } 2605e8dce4dSJason Molenda 261fe95dc95SJason Molenda uint32_t 262fe95dc95SJason Molenda GetNumRunningItems () 263fe95dc95SJason Molenda { 264fe95dc95SJason Molenda uint32_t result = 0; 265fe95dc95SJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 266fe95dc95SJason Molenda if (queue_sp) 267fe95dc95SJason Molenda result = queue_sp->GetNumRunningWorkItems(); 268fe95dc95SJason Molenda return result; 269fe95dc95SJason Molenda } 270fe95dc95SJason Molenda 271c8064ac6SJason Molenda lldb::SBProcess 272c8064ac6SJason Molenda GetProcess () 2735e8dce4dSJason Molenda { 2745e8dce4dSJason Molenda SBProcess result; 2755e8dce4dSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 2765e8dce4dSJason Molenda if (queue_sp) 2775e8dce4dSJason Molenda { 2785e8dce4dSJason Molenda result.SetSP (queue_sp->GetProcess()); 2795e8dce4dSJason Molenda } 2805e8dce4dSJason Molenda return result; 2815e8dce4dSJason Molenda } 282c8064ac6SJason Molenda 283aac16e0fSJason Molenda lldb::QueueKind 284aac16e0fSJason Molenda GetKind () 285aac16e0fSJason Molenda { 286aac16e0fSJason Molenda lldb::QueueKind kind = eQueueKindUnknown; 287aac16e0fSJason Molenda QueueSP queue_sp = m_queue_wp.lock(); 288aac16e0fSJason Molenda if (queue_sp) 289aac16e0fSJason Molenda kind = queue_sp->GetKind(); 290aac16e0fSJason Molenda 291aac16e0fSJason Molenda return kind; 292aac16e0fSJason Molenda } 293aac16e0fSJason Molenda 294c8064ac6SJason Molenda private: 295c8064ac6SJason Molenda lldb::QueueWP m_queue_wp; 296c8064ac6SJason Molenda std::vector<lldb::ThreadWP> m_threads; // threads currently executing this queue's items 297c8064ac6SJason Molenda bool m_thread_list_fetched; // have we tried to fetch the threads list already? 2982fd83355SJason Molenda std::vector<lldb::QueueItemSP> m_pending_items; // items currently enqueued 2992fd83355SJason Molenda bool m_pending_items_fetched; // have we tried to fetch the item list already? 300c8064ac6SJason Molenda }; 301c8064ac6SJason Molenda 302c8064ac6SJason Molenda } 303c8064ac6SJason Molenda 304c8064ac6SJason Molenda SBQueue::SBQueue () : 305c8064ac6SJason Molenda m_opaque_sp (new QueueImpl()) 306c8064ac6SJason Molenda { 307c8064ac6SJason Molenda } 308c8064ac6SJason Molenda 309c8064ac6SJason Molenda SBQueue::SBQueue (const QueueSP& queue_sp) : 310c8064ac6SJason Molenda m_opaque_sp (new QueueImpl (queue_sp)) 311c8064ac6SJason Molenda { 312c8064ac6SJason Molenda } 313c8064ac6SJason Molenda 314c8064ac6SJason Molenda SBQueue::SBQueue (const SBQueue &rhs) 315c8064ac6SJason Molenda { 316c8064ac6SJason Molenda if (&rhs == this) 317c8064ac6SJason Molenda return; 318c8064ac6SJason Molenda 319c8064ac6SJason Molenda m_opaque_sp = rhs.m_opaque_sp; 320c8064ac6SJason Molenda } 321c8064ac6SJason Molenda 322c8064ac6SJason Molenda const lldb::SBQueue & 323c8064ac6SJason Molenda SBQueue::operator = (const lldb::SBQueue &rhs) 324c8064ac6SJason Molenda { 325c8064ac6SJason Molenda m_opaque_sp = rhs.m_opaque_sp; 326c8064ac6SJason Molenda return *this; 327c8064ac6SJason Molenda } 328c8064ac6SJason Molenda 329c8064ac6SJason Molenda SBQueue::~SBQueue() 330c8064ac6SJason Molenda { 331c8064ac6SJason Molenda } 332c8064ac6SJason Molenda 333c8064ac6SJason Molenda bool 334c8064ac6SJason Molenda SBQueue::IsValid() const 335c8064ac6SJason Molenda { 336ac605f4aSJason Molenda bool is_valid = m_opaque_sp->IsValid (); 337ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 338ac605f4aSJason Molenda if (log) 339ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::IsValid() == %s", m_opaque_sp->GetQueueID(), 340ac605f4aSJason Molenda is_valid ? "true" : "false"); 341ac605f4aSJason Molenda return is_valid; 342c8064ac6SJason Molenda } 343c8064ac6SJason Molenda 344c8064ac6SJason Molenda 345c8064ac6SJason Molenda void 346c8064ac6SJason Molenda SBQueue::Clear () 347c8064ac6SJason Molenda { 348ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 349ac605f4aSJason Molenda if (log) 350ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::Clear()", m_opaque_sp->GetQueueID()); 351c8064ac6SJason Molenda m_opaque_sp->Clear(); 352c8064ac6SJason Molenda } 353c8064ac6SJason Molenda 354c8064ac6SJason Molenda 355c8064ac6SJason Molenda void 356c8064ac6SJason Molenda SBQueue::SetQueue (const QueueSP& queue_sp) 357c8064ac6SJason Molenda { 358c8064ac6SJason Molenda m_opaque_sp->SetQueue (queue_sp); 359c8064ac6SJason Molenda } 360c8064ac6SJason Molenda 361c8064ac6SJason Molenda lldb::queue_id_t 362c8064ac6SJason Molenda SBQueue::GetQueueID () const 363c8064ac6SJason Molenda { 364ac605f4aSJason Molenda lldb::queue_id_t qid = m_opaque_sp->GetQueueID (); 365ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 366ac605f4aSJason Molenda if (log) 367ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetQueueID() == 0x%" PRIx64, m_opaque_sp->GetQueueID(), (uint64_t) qid); 368ac605f4aSJason Molenda return qid; 369c8064ac6SJason Molenda } 370c8064ac6SJason Molenda 371c8064ac6SJason Molenda uint32_t 372c8064ac6SJason Molenda SBQueue::GetIndexID () const 373c8064ac6SJason Molenda { 374ac605f4aSJason Molenda uint32_t index_id = m_opaque_sp->GetIndexID (); 375ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 376ac605f4aSJason Molenda if (log) 377ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetIndexID() == 0x%" PRIx32, m_opaque_sp->GetQueueID(), index_id); 378ac605f4aSJason Molenda return index_id; 379c8064ac6SJason Molenda } 380c8064ac6SJason Molenda 381c8064ac6SJason Molenda const char * 382c8064ac6SJason Molenda SBQueue::GetName () const 383c8064ac6SJason Molenda { 384ac605f4aSJason Molenda const char *name = m_opaque_sp->GetName (); 385ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 386ac605f4aSJason Molenda if (log) 387ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetName() == %s", m_opaque_sp->GetQueueID(), 388ac605f4aSJason Molenda name ? name : ""); 389ac605f4aSJason Molenda return name; 390c8064ac6SJason Molenda } 391c8064ac6SJason Molenda 392c8064ac6SJason Molenda uint32_t 393c8064ac6SJason Molenda SBQueue::GetNumThreads () 394c8064ac6SJason Molenda { 395ac605f4aSJason Molenda uint32_t numthreads = m_opaque_sp->GetNumThreads (); 396ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 397ac605f4aSJason Molenda if (log) 398ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumThreads() == %d", m_opaque_sp->GetQueueID(), numthreads); 399ac605f4aSJason Molenda return numthreads; 400c8064ac6SJason Molenda } 401c8064ac6SJason Molenda 402c8064ac6SJason Molenda SBThread 403c8064ac6SJason Molenda SBQueue::GetThreadAtIndex (uint32_t idx) 404c8064ac6SJason Molenda { 405ac605f4aSJason Molenda SBThread th = m_opaque_sp->GetThreadAtIndex (idx); 406ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 407ac605f4aSJason Molenda if (log) 408ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetThreadAtIndex(%d)", m_opaque_sp->GetQueueID(), idx); 409ac605f4aSJason Molenda return th; 410c8064ac6SJason Molenda } 411c8064ac6SJason Molenda 412c8064ac6SJason Molenda 413c8064ac6SJason Molenda uint32_t 4142fd83355SJason Molenda SBQueue::GetNumPendingItems () 415c8064ac6SJason Molenda { 416ac605f4aSJason Molenda uint32_t pending_items = m_opaque_sp->GetNumPendingItems (); 417ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 418ac605f4aSJason Molenda if (log) 419ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumPendingItems() == %d", m_opaque_sp->GetQueueID(), pending_items); 420ac605f4aSJason Molenda return pending_items; 421c8064ac6SJason Molenda } 422c8064ac6SJason Molenda 423c8064ac6SJason Molenda SBQueueItem 4242fd83355SJason Molenda SBQueue::GetPendingItemAtIndex (uint32_t idx) 425c8064ac6SJason Molenda { 426ac605f4aSJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 427ac605f4aSJason Molenda if (log) 428ac605f4aSJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetPendingItemAtIndex(%d)", m_opaque_sp->GetQueueID(), idx); 4292fd83355SJason Molenda return m_opaque_sp->GetPendingItemAtIndex (idx); 430c8064ac6SJason Molenda } 431c8064ac6SJason Molenda 432fe95dc95SJason Molenda uint32_t 433fe95dc95SJason Molenda SBQueue::GetNumRunningItems () 434fe95dc95SJason Molenda { 435fe95dc95SJason Molenda uint32_t running_items = m_opaque_sp->GetNumRunningItems (); 436fe95dc95SJason Molenda Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 437fe95dc95SJason Molenda if (log) 438fe95dc95SJason Molenda log->Printf("SBQueue(0x%" PRIx64 ")::GetNumRunningItems() == %d", m_opaque_sp->GetQueueID(), running_items); 439fe95dc95SJason Molenda return running_items; 440fe95dc95SJason Molenda } 441fe95dc95SJason Molenda 442c8064ac6SJason Molenda SBProcess 443c8064ac6SJason Molenda SBQueue::GetProcess () 444c8064ac6SJason Molenda { 445c8064ac6SJason Molenda return m_opaque_sp->GetProcess(); 446c8064ac6SJason Molenda } 447aac16e0fSJason Molenda 448aac16e0fSJason Molenda lldb::QueueKind 449aac16e0fSJason Molenda SBQueue::GetKind () 450aac16e0fSJason Molenda { 451aac16e0fSJason Molenda return m_opaque_sp->GetKind(); 452aac16e0fSJason Molenda } 453