//===-- NativeThreadProtocol.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_NativeThreadProtocol_h_ #define liblldb_NativeThreadProtocol_h_ #include #include "lldb/lldb-private-forward.h" #include "lldb/lldb-types.h" #include "lldb/Host/Debug.h" namespace lldb_private { //------------------------------------------------------------------ // NativeThreadProtocol //------------------------------------------------------------------ class NativeThreadProtocol: public std::enable_shared_from_this { public: NativeThreadProtocol (NativeProcessProtocol *process, lldb::tid_t tid); virtual ~NativeThreadProtocol() { } virtual std::string GetName() = 0; virtual lldb::StateType GetState () = 0; virtual NativeRegisterContextSP GetRegisterContext () = 0; virtual Error ReadRegister (uint32_t reg, RegisterValue ®_value); virtual Error WriteRegister (uint32_t reg, const RegisterValue ®_value); virtual Error SaveAllRegisters (lldb::DataBufferSP &data_sp); virtual Error RestoreAllRegisters (lldb::DataBufferSP &data_sp); virtual bool GetStopReason (ThreadStopInfo &stop_info, std::string& description) = 0; lldb::tid_t GetID() const { return m_tid; } NativeProcessProtocolSP GetProcess (); // --------------------------------------------------------------------- // Thread-specific watchpoints // --------------------------------------------------------------------- virtual Error SetWatchpoint (lldb::addr_t addr, size_t size, uint32_t watch_flags, bool hardware) = 0; virtual Error RemoveWatchpoint (lldb::addr_t addr) = 0; protected: NativeProcessProtocolWP m_process_wp; lldb::tid_t m_tid; }; } #endif // #ifndef liblldb_NativeThreadProtocol_h_