//===-- LinuxThread.h -------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef liblldb_LinuxThread_H_ #define liblldb_LinuxThread_H_ // C Includes // C++ Includes #include // Other libraries and framework includes #include "lldb/Target/Thread.h" class ProcessMessage; class ProcessMonitor; class RegisterContextLinux; //------------------------------------------------------------------------------ // @class LinuxThread // @brief Abstraction of a linux process (thread). class LinuxThread : public lldb_private::Thread { public: LinuxThread(lldb_private::Process &process, lldb::tid_t tid); virtual ~LinuxThread(); void RefreshStateAfterStop(); bool WillResume(lldb::StateType resume_state); const char * GetInfo(); virtual lldb::RegisterContextSP GetRegisterContext(); virtual lldb::RegisterContextSP CreateRegisterContextForFrame (lldb_private::StackFrame *frame); //-------------------------------------------------------------------------- // These static functions provide a mapping from the register offset // back to the register index or name for use in debugging or log // output. static unsigned GetRegisterIndexFromOffset(unsigned offset); static const char * GetRegisterName(unsigned reg); static const char * GetRegisterNameFromOffset(unsigned offset); //-------------------------------------------------------------------------- // These methods form a specialized interface to linux threads. // bool Resume(); void Notify(const ProcessMessage &message); private: RegisterContextLinux * GetRegisterContextLinux () { if (!m_reg_context_sp) GetRegisterContext(); return (RegisterContextLinux *)m_reg_context_sp.get(); } std::auto_ptr m_frame_ap; lldb::BreakpointSiteSP m_breakpoint; lldb::StopInfoSP m_stop_info; ProcessMonitor & GetMonitor(); lldb::StopInfoSP GetPrivateStopReason(); void BreakNotify(const ProcessMessage &message); void TraceNotify(const ProcessMessage &message); void LimboNotify(const ProcessMessage &message); void SignalNotify(const ProcessMessage &message); void SignalDeliveredNotify(const ProcessMessage &message); void CrashNotify(const ProcessMessage &message); lldb_private::Unwind * GetUnwinder(); }; #endif // #ifndef liblldb_LinuxThread_H_