9#ifndef LLDB_SOURCE_PLUGINS_SYSTEMRUNTIME_MACOSX_SYSTEMRUNTIMEMACOSX_H
10#define LLDB_SOURCE_PLUGINS_SYSTEMRUNTIME_MACOSX_SYSTEMRUNTIMEMACOSX_H
43 return "systemruntime-macosx";
51 void Clear(
bool clear_process);
55 const std::vector<lldb_private::ConstString> &
71 uint64_t queues_buffer_size, uint64_t count,
75 uint64_t items_buffer_size,
void ReadLibpthreadOffsets()
lldb::addr_t m_dispatch_tsd_indexes_addr
lldb::ThreadSP GetExtendedBacktraceThread(lldb::ThreadSP thread, lldb_private::ConstString type) override
Return a Thread which shows the origin of this thread's creation.
PendingItemsForQueue GetPendingItemRefsForQueue(lldb::addr_t queue)
lldb::queue_id_t GetQueueIDFromThreadQAddress(lldb::addr_t dispatch_qaddr) override
Get the QueueID for the libdispatch queue given the thread's dispatch_qaddr.
~SystemRuntimeMacOSX() override
lldb_private::AppleGetPendingItemsHandler m_get_pending_items_handler
lldb_private::AppleGetQueuesHandler m_get_queues_handler
struct LibdispatchTSDIndexes m_libdispatch_tsd_indexes
lldb::addr_t m_page_to_free
void ReadLibdispatchTSDIndexesAddress()
const SystemRuntimeMacOSX & operator=(const SystemRuntimeMacOSX &)=delete
void ReadLibdispatchTSDIndexes()
libBacktraceRecording_info m_lib_backtrace_recording_info
lldb_private::AppleGetItemInfoHandler m_get_item_info_handler
llvm::StringRef GetPluginName() override
lldb::addr_t m_dispatch_queue_offsets_addr
std::string GetQueueNameFromThreadQAddress(lldb::addr_t dispatch_qaddr) override
Get the queue name for a thread given a thread's dispatch_qaddr.
void PopulateQueuesUsingLibBTR(lldb::addr_t queues_buffer, uint64_t queues_buffer_size, uint64_t count, lldb_private::QueueList &queue_list)
void Detach() override
Called before detaching from a process.
void ReadLibdispatchOffsetsAddress()
struct LibdispatchOffsets m_libdispatch_offsets
std::recursive_mutex m_mutex
void PopulatePendingItemsForQueue(lldb_private::Queue *queue) override
Get the pending work items for a libdispatch Queue.
const std::vector< lldb_private::ConstString > & GetExtendedBacktraceTypes() override
Return a list of thread origin extended backtraces that may be available.
lldb_private::AppleGetThreadItemInfoHandler m_get_thread_item_info_handler
lldb::addr_t GetLibdispatchQueueAddressFromThreadQAddress(lldb::addr_t dispatch_qaddr) override
Get the libdispatch_queue_t address for the queue given the thread's dispatch_qaddr.
void ReadLibdispatchOffsets()
struct LibdispatchVoucherOffsets m_libdispatch_voucher_offsets
bool BacktraceRecordingHeadersInitialized()
lldb::QueueKind GetQueueKind(lldb::addr_t dispatch_queue_addr) override
Retrieve the Queue kind for the queue at a thread's dispatch_qaddr.
ItemInfo ExtractItemInfoFromBuffer(lldb_private::DataExtractor &extractor)
lldb::addr_t m_libpthread_layout_offsets_addr
lldb::addr_t m_dispatch_voucher_offsets_addr
bool SafeToCallFunctionsOnThisThread(lldb::ThreadSP thread_sp) override
Determine whether it is safe to run an expression on a given thread.
void CompleteQueueItem(lldb_private::QueueItem *queue_item, lldb::addr_t item_ref) override
Complete the fields in a QueueItem.
uint64_t m_page_to_free_size
void PopulatePendingQueuesUsingLibBTR(lldb::addr_t items_buffer, uint64_t items_buffer_size, uint64_t count, lldb_private::Queue *queue)
static lldb_private::SystemRuntime * CreateInstance(lldb_private::Process *process)
void AddThreadExtendedInfoPacketHints(lldb_private::StructuredData::ObjectSP dict) override
Add key-value pairs to the StructuredData dictionary object with information debugserver may need whe...
lldb::ThreadSP GetExtendedBacktraceFromItemRef(lldb::addr_t item_ref)
struct LibpthreadOffsets m_libpthread_offsets
lldb::ThreadSP GetExtendedBacktraceForQueueItem(lldb::QueueItemSP queue_item_sp, lldb_private::ConstString type) override
Get the extended backtrace thread for a QueueItem.
void Clear(bool clear_process)
lldb::user_id_t m_break_id
void ReadLibpthreadOffsetsAddress()
void PopulateQueueList(lldb_private::QueueList &queue_list) override
Populate the Process' QueueList with libdispatch / GCD queues that exist.
SystemRuntimeMacOSX(const SystemRuntimeMacOSX &)=delete
static llvm::StringRef GetPluginNameStatic()
A uniqued constant string class.
A plug-in interface definition class for debugging a process.
std::shared_ptr< Object > ObjectSP
A plug-in interface definition class for system runtimes.
std::shared_ptr< lldb_private::Thread > ThreadSP
std::shared_ptr< lldb_private::QueueItem > QueueItemSP
std::string target_queue_label
std::vector< lldb::addr_t > enqueuing_callstack
uint64_t target_queue_serialnum
uint64_t enqueuing_queue_serialnum
std::string enqueuing_queue_label
lldb::addr_t item_that_enqueued_this
std::string enqueuing_thread_label
lldb::addr_t function_or_block
uint32_t enqueuing_callstack_frame_count
uint64_t enqueuing_thread_id
lldb::addr_t code_address
uint16_t dqo_target_queue
uint16_t dqo_suspend_cnt_size
uint16_t dqo_priority_size
uint16_t dqo_serialnum_size
uint16_t dqo_target_queue_size
uint16_t dqo_running_size
LibdispatchTSDIndexes()=default
uint64_t dti_voucher_index
uint64_t dti_qos_class_index
LibdispatchVoucherOffsets()=default
uint16_t vo_activity_ids_count
uint16_t vo_activity_ids_array
uint16_t vo_activity_ids_array_entry_size
uint16_t vo_activity_ids_count_size
uint16_t plo_pthread_tsd_entry_size
uint16_t plo_pthread_tsd_base_address_offset
uint16_t plo_pthread_tsd_base_offset
LibpthreadOffsets()=default
std::vector< ItemRefAndCodeAddress > item_refs_and_code_addresses
uint16_t queue_info_version
uint16_t queue_info_data_offset
libBacktraceRecording_info()=default
uint16_t item_info_data_offset
uint16_t item_info_version