1 //===-- NativeThreadNetBSD.h ---------------------------------- -*- C++ -*-===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #ifndef liblldb_NativeThreadNetBSD_H_
10 #define liblldb_NativeThreadNetBSD_H_
12 #include "lldb/Host/common/NativeThreadProtocol.h"
14 #include "Plugins/Process/NetBSD/NativeRegisterContextNetBSD.h"
20 namespace lldb_private
{
21 namespace process_netbsd
{
23 class NativeProcessNetBSD
;
25 class NativeThreadNetBSD
: public NativeThreadProtocol
{
26 friend class NativeProcessNetBSD
;
29 NativeThreadNetBSD(NativeProcessNetBSD
&process
, lldb::tid_t tid
);
31 // NativeThreadProtocol Interface
32 std::string
GetName() override
;
34 lldb::StateType
GetState() override
;
36 bool GetStopReason(ThreadStopInfo
&stop_info
,
37 std::string
&description
) override
;
39 NativeRegisterContextNetBSD
&GetRegisterContext() override
;
41 Status
SetWatchpoint(lldb::addr_t addr
, size_t size
, uint32_t watch_flags
,
42 bool hardware
) override
;
44 Status
RemoveWatchpoint(lldb::addr_t addr
) override
;
46 Status
SetHardwareBreakpoint(lldb::addr_t addr
, size_t size
) override
;
48 Status
RemoveHardwareBreakpoint(lldb::addr_t addr
) override
;
51 // Interface for friend classes
57 void SetStoppedBySignal(uint32_t signo
, const siginfo_t
*info
= nullptr);
58 void SetStoppedByBreakpoint();
59 void SetStoppedByTrace();
60 void SetStoppedByExec();
61 void SetStoppedByWatchpoint(uint32_t wp_index
);
62 void SetStoppedByFork(lldb::pid_t child_pid
, lldb::tid_t child_tid
);
63 void SetStoppedByVFork(lldb::pid_t child_pid
, lldb::tid_t child_tid
);
64 void SetStoppedByVForkDone();
65 void SetStoppedWithNoReason();
70 llvm::Error
CopyWatchpointsFrom(NativeThreadNetBSD
& source
);
73 lldb::StateType m_state
;
74 ThreadStopInfo m_stop_info
;
75 std::unique_ptr
<NativeRegisterContextNetBSD
> m_reg_context_up
;
76 std::string m_stop_description
;
77 using WatchpointIndexMap
= std::map
<lldb::addr_t
, uint32_t>;
78 WatchpointIndexMap m_watchpoint_index_map
;
79 WatchpointIndexMap m_hw_break_index_map
;
82 typedef std::shared_ptr
<NativeThreadNetBSD
> NativeThreadNetBSDSP
;
83 } // namespace process_netbsd
84 } // namespace lldb_private
86 #endif // #ifndef liblldb_NativeThreadNetBSD_H_