xref: /freebsd-src/contrib/llvm-project/lldb/source/Plugins/Process/FreeBSDKernel/ThreadFreeBSDKernel.h (revision 0eae32dcef82f6f06de6419a0d623d7def0cc8f6)
1*0eae32dcSDimitry Andric //===-- ThreadFreeBSDKernel.h ------------------------------------- C++ -*-===//
2*0eae32dcSDimitry Andric //
3*0eae32dcSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0eae32dcSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*0eae32dcSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0eae32dcSDimitry Andric //
7*0eae32dcSDimitry Andric //===----------------------------------------------------------------------===//
8*0eae32dcSDimitry Andric 
9*0eae32dcSDimitry Andric #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H
10*0eae32dcSDimitry Andric #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H
11*0eae32dcSDimitry Andric 
12*0eae32dcSDimitry Andric #include "lldb/Target/Thread.h"
13*0eae32dcSDimitry Andric 
14*0eae32dcSDimitry Andric class ThreadFreeBSDKernel : public lldb_private::Thread {
15*0eae32dcSDimitry Andric public:
16*0eae32dcSDimitry Andric   ThreadFreeBSDKernel(lldb_private::Process &process, lldb::tid_t tid,
17*0eae32dcSDimitry Andric                       lldb::addr_t pcb_addr);
18*0eae32dcSDimitry Andric 
19*0eae32dcSDimitry Andric   ~ThreadFreeBSDKernel() override;
20*0eae32dcSDimitry Andric 
21*0eae32dcSDimitry Andric   void RefreshStateAfterStop() override;
22*0eae32dcSDimitry Andric 
23*0eae32dcSDimitry Andric   lldb::RegisterContextSP GetRegisterContext() override;
24*0eae32dcSDimitry Andric 
25*0eae32dcSDimitry Andric   lldb::RegisterContextSP
26*0eae32dcSDimitry Andric   CreateRegisterContextForFrame(lldb_private::StackFrame *frame) override;
27*0eae32dcSDimitry Andric 
28*0eae32dcSDimitry Andric protected:
29*0eae32dcSDimitry Andric   bool CalculateStopInfo() override;
30*0eae32dcSDimitry Andric 
31*0eae32dcSDimitry Andric private:
32*0eae32dcSDimitry Andric   lldb::RegisterContextSP m_thread_reg_ctx_sp;
33*0eae32dcSDimitry Andric   lldb::addr_t m_pcb_addr;
34*0eae32dcSDimitry Andric };
35*0eae32dcSDimitry Andric 
36*0eae32dcSDimitry Andric #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H
37