LLDB mainline
|
#include <AppleGetItemInfoHandler.h>
Classes | |
struct | GetItemInfoReturnInfo |
Public Member Functions | |
AppleGetItemInfoHandler (lldb_private::Process *process) | |
~AppleGetItemInfoHandler () | |
GetItemInfoReturnInfo | GetItemInfo (Thread &thread, lldb::addr_t item, lldb::addr_t page_to_free, uint64_t page_to_free_size, lldb_private::Status &error) |
Get the information about a work item by calling __introspection_dispatch_queue_item_get_info. | |
void | Detach () |
Private Member Functions | |
lldb::addr_t | SetupGetItemInfoFunction (Thread &thread, ValueList &get_item_info_arglist) |
Private Attributes | |
lldb_private::Process * | m_process |
std::unique_ptr< UtilityFunction > | m_get_item_info_impl_code |
std::mutex | m_get_item_info_function_mutex |
lldb::addr_t | m_get_item_info_return_buffer_addr |
std::mutex | m_get_item_info_retbuffer_mutex |
Static Private Attributes | |
static const char * | g_get_item_info_function_name |
static const char * | g_get_item_info_function_code |
Definition at line 42 of file AppleGetItemInfoHandler.h.
AppleGetItemInfoHandler::AppleGetItemInfoHandler | ( | lldb_private::Process * | process | ) |
Definition at line 96 of file AppleGetItemInfoHandler.cpp.
|
default |
void AppleGetItemInfoHandler::Detach | ( | ) |
Definition at line 104 of file AppleGetItemInfoHandler.cpp.
References lldb_private::Process::DeallocateMemory(), lldb_private::Process::IsAlive(), LLDB_INVALID_ADDRESS, m_get_item_info_retbuffer_mutex, m_get_item_info_return_buffer_addr, and m_process.
Referenced by SystemRuntimeMacOSX::Detach().
AppleGetItemInfoHandler::GetItemInfoReturnInfo AppleGetItemInfoHandler::GetItemInfo | ( | Thread & | thread, |
lldb::addr_t | item, | ||
lldb::addr_t | page_to_free, | ||
uint64_t | page_to_free_size, | ||
lldb_private::Status & | error | ||
) |
Get the information about a work item by calling __introspection_dispatch_queue_item_get_info.
If there's a page of memory that needs to be freed, pass in the address and size and it will be freed before getting the list of queues.
[in] | thread | The thread to run this plan on. |
[in] | item | The introspection_dispatch_item_info_ref value for the item of interest. |
[in] | page_to_free | An address of an inferior process vm page that needs to be deallocated, LLDB_INVALID_ADDRESS if this is not needed. |
[in] | page_to_free_size | The size of the vm page that needs to be deallocated if an address was passed in to page_to_free. |
[out] | error | This object will be updated with the error status / error string from any failures encountered. |
Definition at line 217 of file AppleGetItemInfoHandler.cpp.
References lldb_private::Thread::CalculateExecutionContext(), lldb_private::Thread::CalculateProcess(), lldb_private::Thread::CalculateTarget(), lldb::eBasicTypeInt, lldb::eBasicTypeUnsignedLongLong, lldb::eBasicTypeVoid, lldb::eExpressionCompleted, error(), lldb_private::FunctionCaller::ExecuteFunction(), lldb_private::ScratchTypeSystemClang::GetForTarget(), lldb_private::UserID::GetID(), lldb_private::GetLog(), lldb_private::CompilerType::GetPointerType(), lldb_private::Value::GetScalar(), lldb_private::Thread::GetStackFrameAtIndex(), lldb_private::AppleGetItemInfoHandler::GetItemInfoReturnInfo::item_buffer_ptr, lldb_private::AppleGetItemInfoHandler::GetItemInfoReturnInfo::item_buffer_size, LLDB_INVALID_ADDRESS, LLDB_LOGF, m_get_item_info_impl_code, m_get_item_info_retbuffer_mutex, m_get_item_info_return_buffer_addr, m_process, lldb_private::ValueList::PushValue(), lldb_private::Process::ReadUnsignedIntegerFromMemory(), lldb_private::Thread::SafeToCallFunctions(), lldb_private::Value::Scalar, lldb_private::Value::SetCompilerType(), lldb_private::EvaluateExpressionOptions::SetIgnoreBreakpoints(), lldb_private::EvaluateExpressionOptions::SetIsForUtilityExpr(), lldb_private::EvaluateExpressionOptions::SetStopOthers(), lldb_private::EvaluateExpressionOptions::SetTimeout(), lldb_private::EvaluateExpressionOptions::SetTryAllThreads(), lldb_private::EvaluateExpressionOptions::SetUnwindOnError(), SetupGetItemInfoFunction(), lldb_private::Value::SetValueType(), and lldb_private::SystemRuntime.
Referenced by SystemRuntimeMacOSX::CompleteQueueItem(), and SystemRuntimeMacOSX::GetExtendedBacktraceFromItemRef().
|
private |
Definition at line 129 of file AppleGetItemInfoHandler.cpp.
References lldb_private::DiagnosticManager::Clear(), lldb_private::Target::CreateUtilityFunction(), lldb_private::DiagnosticManager::Dump(), lldb::eBasicTypeVoid, lldb::eLanguageTypeC, lldb::eLanguageTypeObjC, error(), g_get_item_info_function_code, g_get_item_info_function_name, lldb_private::CompilerType::GetBasicTypeFromAST(), lldb_private::GetLog(), lldb_private::CompilerType::GetPointerType(), lldb_private::Thread::GetProcess(), lldb_private::ExecutionContext::GetTargetRef(), LLDB_INVALID_ADDRESS, LLDB_LOG_ERROR, LLDB_LOGF, m_get_item_info_function_mutex, m_get_item_info_impl_code, lldb_private::SystemRuntime, and lldb_private::FunctionCaller::WriteFunctionArguments().
Referenced by GetItemInfo().
|
staticprivate |
Definition at line 99 of file AppleGetItemInfoHandler.h.
Referenced by SetupGetItemInfoFunction().
|
staticprivate |
Definition at line 98 of file AppleGetItemInfoHandler.h.
Referenced by SetupGetItemInfoFunction().
|
private |
Definition at line 103 of file AppleGetItemInfoHandler.h.
Referenced by SetupGetItemInfoFunction().
|
private |
Definition at line 102 of file AppleGetItemInfoHandler.h.
Referenced by GetItemInfo(), and SetupGetItemInfoFunction().
|
private |
Definition at line 106 of file AppleGetItemInfoHandler.h.
Referenced by Detach(), and GetItemInfo().
|
private |
Definition at line 105 of file AppleGetItemInfoHandler.h.
Referenced by Detach(), and GetItemInfo().
|
private |
Definition at line 101 of file AppleGetItemInfoHandler.h.
Referenced by Detach(), and GetItemInfo().