const char *ThreadGDBRemote::GetQueueName() { // If our cached queue info is valid, then someone called // ThreadGDBRemote::SetQueueInfo(...) with valid information that was gleaned // from the stop reply packet. In this case we trust that the info is valid // in m_dispatch_queue_name without refetching it if (CachedQueueInfoIsValid()) { if (m_dispatch_queue_name.empty()) return nullptr; else return m_dispatch_queue_name.c_str(); } // Always re-fetch the dispatch queue name since it can change if (m_associated_with_libdispatch_queue == eLazyBoolNo) return nullptr; if (m_thread_dispatch_qaddr != 0 && m_thread_dispatch_qaddr != LLDB_INVALID_ADDRESS) { ProcessSP process_sp(GetProcess()); if (process_sp) { SystemRuntime *runtime = process_sp->GetSystemRuntime(); if (runtime) m_dispatch_queue_name = runtime->GetQueueNameFromThreadQAddress(m_thread_dispatch_qaddr); else m_dispatch_queue_name.clear(); if (!m_dispatch_queue_name.empty()) return m_dispatch_queue_name.c_str(); } } return nullptr; }
const char * ThreadGDBRemote::GetQueueName () { // Always re-fetch the dispatch queue name since it can change if (m_thread_dispatch_qaddr != 0 || m_thread_dispatch_qaddr != LLDB_INVALID_ADDRESS) { ProcessSP process_sp (GetProcess()); if (process_sp) { SystemRuntime *runtime = process_sp->GetSystemRuntime (); if (runtime) { m_dispatch_queue_name = runtime->GetQueueNameFromThreadQAddress (m_thread_dispatch_qaddr); } if (m_dispatch_queue_name.length() > 0) { return m_dispatch_queue_name.c_str(); } } } return NULL; }