LLDB mainline
|
#include <AppleGetPendingItemsHandler.h>
Classes | |
struct | GetPendingItemsReturnInfo |
Public Member Functions | |
AppleGetPendingItemsHandler (lldb_private::Process *process) | |
~AppleGetPendingItemsHandler () | |
GetPendingItemsReturnInfo | GetPendingItems (Thread &thread, lldb::addr_t queue, lldb::addr_t page_to_free, uint64_t page_to_free_size, lldb_private::Status &error) |
Get the list of pending items for a given queue via a call to __introspection_dispatch_queue_get_pending_items. | |
void | Detach () |
Private Member Functions | |
lldb::addr_t | SetupGetPendingItemsFunction (Thread &thread, ValueList &get_pending_items_arglist) |
Private Attributes | |
lldb_private::Process * | m_process |
std::unique_ptr< UtilityFunction > | m_get_pending_items_impl_code |
std::mutex | m_get_pending_items_function_mutex |
lldb::addr_t | m_get_pending_items_return_buffer_addr |
std::mutex | m_get_pending_items_retbuffer_mutex |
Static Private Attributes | |
static const char * | g_get_pending_items_function_name |
static const char * | g_get_pending_items_function_code |
Definition at line 44 of file AppleGetPendingItemsHandler.h.
AppleGetPendingItemsHandler::AppleGetPendingItemsHandler | ( | lldb_private::Process * | process | ) |
Definition at line 100 of file AppleGetPendingItemsHandler.cpp.
|
default |
void AppleGetPendingItemsHandler::Detach | ( | ) |
Definition at line 108 of file AppleGetPendingItemsHandler.cpp.
References lldb_private::Process::DeallocateMemory(), lldb_private::Process::IsAlive(), LLDB_INVALID_ADDRESS, m_get_pending_items_retbuffer_mutex, m_get_pending_items_return_buffer_addr, and m_process.
Referenced by SystemRuntimeMacOSX::Detach().
AppleGetPendingItemsHandler::GetPendingItemsReturnInfo AppleGetPendingItemsHandler::GetPendingItems | ( | Thread & | thread, |
lldb::addr_t | queue, | ||
lldb::addr_t | page_to_free, | ||
uint64_t | page_to_free_size, | ||
lldb_private::Status & | error | ||
) |
Get the list of pending items for a given queue via a call to __introspection_dispatch_queue_get_pending_items.
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] | queue | The dispatch_queue_t value for the queue 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 212 of file AppleGetPendingItemsHandler.cpp.
References lldb_private::Thread::CalculateExecutionContext(), lldb_private::Thread::CalculateProcess(), lldb_private::Thread::CalculateTarget(), lldb_private::AppleGetPendingItemsHandler::GetPendingItemsReturnInfo::count, 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::AppleGetPendingItemsHandler::GetPendingItemsReturnInfo::items_buffer_ptr, lldb_private::AppleGetPendingItemsHandler::GetPendingItemsReturnInfo::items_buffer_size, LLDB_INVALID_ADDRESS, LLDB_LOGF, m_get_pending_items_impl_code, m_get_pending_items_retbuffer_mutex, m_get_pending_items_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(), SetupGetPendingItemsFunction(), lldb_private::Value::SetValueType(), and lldb_private::SystemRuntime.
Referenced by SystemRuntimeMacOSX::GetPendingItemRefsForQueue().
|
private |
Definition at line 132 of file AppleGetPendingItemsHandler.cpp.
References lldb_private::DiagnosticManager::Clear(), lldb_private::Target::CreateUtilityFunction(), lldb_private::DiagnosticManager::Dump(), lldb::eBasicTypeVoid, lldb::eLanguageTypeC, error(), g_get_pending_items_function_code, g_get_pending_items_function_name, lldb_private::ScratchTypeSystemClang::GetForTarget(), 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_pending_items_function_mutex, m_get_pending_items_impl_code, lldb_private::SystemRuntime, and lldb_private::FunctionCaller::WriteFunctionArguments().
Referenced by GetPendingItems().
|
staticprivate |
Definition at line 103 of file AppleGetPendingItemsHandler.h.
Referenced by SetupGetPendingItemsFunction().
|
staticprivate |
Definition at line 102 of file AppleGetPendingItemsHandler.h.
Referenced by SetupGetPendingItemsFunction().
|
private |
Definition at line 107 of file AppleGetPendingItemsHandler.h.
Referenced by SetupGetPendingItemsFunction().
|
private |
Definition at line 106 of file AppleGetPendingItemsHandler.h.
Referenced by GetPendingItems(), and SetupGetPendingItemsFunction().
|
private |
Definition at line 110 of file AppleGetPendingItemsHandler.h.
Referenced by Detach(), and GetPendingItems().
|
private |
Definition at line 109 of file AppleGetPendingItemsHandler.h.
Referenced by Detach(), and GetPendingItems().
|
private |
Definition at line 105 of file AppleGetPendingItemsHandler.h.
Referenced by Detach(), and GetPendingItems().