9#ifndef LLDB_TARGET_THREADLIST_H
10#define LLDB_TARGET_THREADLIST_H
21#include "llvm/ADT/DenseMap.h"
22#include "llvm/ADT/DenseSet.h"
42 uint32_t
GetSize(
bool can_update =
true);
96 bool can_update =
true);
101 bool can_update =
true);
142 std::recursive_mutex &
GetMutex()
const override;
177 llvm::DenseMap<lldb::addr_t, llvm::DenseSet<lldb::tid_t>>
ThreadList * m_thread_list
ExpressionExecutionThreadPusher(ThreadList &thread_list, lldb::tid_t tid)
~ExpressionExecutionThreadPusher()
lldb::ThreadSP RemoveThreadByID(lldb::tid_t tid, bool can_update=true)
lldb::ThreadSP GetSelectedThread()
bool ShouldStop(Event *event_ptr)
Vote ShouldReportStop(Event *event_ptr)
uint32_t GetStopID() const
void ThreadFinishedSteppingOverBreakpoint(lldb::addr_t breakpoint_addr, lldb::tid_t tid)
Called by ThreadPlanStepOverBreakpoint when a thread finishes stepping over a breakpoint.
bool SetSelectedThreadByIndexID(uint32_t index_id, bool notify=false)
lldb::ThreadSP FindThreadByProtocolID(lldb::tid_t tid, bool can_update=true)
void PopExpressionExecutionThread(lldb::tid_t tid)
bool WillResume(lldb::RunDirection &direction)
The thread list asks tells all the threads it is about to resume.
bool SetSelectedThreadByID(lldb::tid_t tid, bool notify=false)
lldb::ThreadSP FindThreadByIndexID(uint32_t index_id, bool can_update=true)
Vote ShouldReportRun(Event *event_ptr)
void SetStopID(uint32_t stop_id)
lldb::ThreadSP GetThreadSPForThreadPtr(Thread *thread_ptr)
lldb::ThreadSP GetThreadAtIndex(uint32_t idx, bool can_update=true)
uint32_t m_stop_id
The process stop ID that this thread list is valid for.
std::recursive_mutex & GetMutex() const override
lldb::ThreadSP FindThreadByID(lldb::tid_t tid, bool can_update=true)
lldb::ThreadSP GetExpressionExecutionThread()
const ThreadList & operator=(const ThreadList &rhs)
Precondition: both thread lists must be belong to the same process.
void DiscardThreadPlans()
void RegisterThreadSteppingOverBreakpoint(lldb::addr_t breakpoint_addr, lldb::tid_t tid)
Register a thread that is about to step over a breakpoint.
void RefreshStateAfterStop()
void Update(ThreadList &rhs)
Precondition: both thread lists must be belong to the same process.
void PushExpressionExecutionThread(lldb::tid_t tid)
void SetShouldReportStop(Vote vote)
lldb::tid_t m_selected_tid
For targets that need the notion of a current thread.
void NotifySelectedThreadChanged(lldb::tid_t tid)
ThreadList(Process &process)
lldb::ThreadSP RemoveThreadByProtocolID(lldb::tid_t tid, bool can_update=true)
llvm::DenseMap< lldb::addr_t, llvm::DenseSet< lldb::tid_t > > m_threads_stepping_over_bp
Tracks which threads are currently stepping over each breakpoint address.
Process & m_process
The process that manages this thread list.
std::vector< lldb::tid_t > m_expression_tid_stack
#define LLDB_INVALID_THREAD_ID
A class that represents a running process on the host machine.
RunDirection
Execution directions.
std::shared_ptr< lldb_private::Thread > ThreadSP