xref: /freebsd-src/contrib/llvm-project/lldb/source/Plugins/Process/FreeBSDKernel/ProcessFreeBSDKernel.h (revision 0eae32dcef82f6f06de6419a0d623d7def0cc8f6)
1*0eae32dcSDimitry Andric //===-- ProcessFreeBSDKernel.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_PROCESSFREEBSDKERNEL_H
10*0eae32dcSDimitry Andric #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
11*0eae32dcSDimitry Andric 
12*0eae32dcSDimitry Andric #include "lldb/Target/PostMortemProcess.h"
13*0eae32dcSDimitry Andric 
14*0eae32dcSDimitry Andric class ProcessFreeBSDKernel : public lldb_private::PostMortemProcess {
15*0eae32dcSDimitry Andric public:
16*0eae32dcSDimitry Andric   ProcessFreeBSDKernel(lldb::TargetSP target_sp, lldb::ListenerSP listener);
17*0eae32dcSDimitry Andric 
18*0eae32dcSDimitry Andric   static lldb::ProcessSP
19*0eae32dcSDimitry Andric   CreateInstance(lldb::TargetSP target_sp, lldb::ListenerSP listener,
20*0eae32dcSDimitry Andric                  const lldb_private::FileSpec *crash_file_path,
21*0eae32dcSDimitry Andric                  bool can_connect);
22*0eae32dcSDimitry Andric 
23*0eae32dcSDimitry Andric   static void Initialize();
24*0eae32dcSDimitry Andric 
25*0eae32dcSDimitry Andric   static void Terminate();
26*0eae32dcSDimitry Andric 
27*0eae32dcSDimitry Andric   static llvm::StringRef GetPluginNameStatic() { return "freebsd-kernel"; }
28*0eae32dcSDimitry Andric 
29*0eae32dcSDimitry Andric   static llvm::StringRef GetPluginDescriptionStatic() {
30*0eae32dcSDimitry Andric     return "FreeBSD kernel vmcore debugging plug-in.";
31*0eae32dcSDimitry Andric   }
32*0eae32dcSDimitry Andric 
33*0eae32dcSDimitry Andric   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
34*0eae32dcSDimitry Andric 
35*0eae32dcSDimitry Andric   lldb_private::Status DoDestroy() override;
36*0eae32dcSDimitry Andric 
37*0eae32dcSDimitry Andric   bool CanDebug(lldb::TargetSP target_sp,
38*0eae32dcSDimitry Andric                 bool plugin_specified_by_name) override;
39*0eae32dcSDimitry Andric 
40*0eae32dcSDimitry Andric   void RefreshStateAfterStop() override;
41*0eae32dcSDimitry Andric 
42*0eae32dcSDimitry Andric   lldb_private::Status DoLoadCore() override;
43*0eae32dcSDimitry Andric 
44*0eae32dcSDimitry Andric   lldb_private::DynamicLoader *GetDynamicLoader() override;
45*0eae32dcSDimitry Andric 
46*0eae32dcSDimitry Andric protected:
47*0eae32dcSDimitry Andric   bool DoUpdateThreadList(lldb_private::ThreadList &old_thread_list,
48*0eae32dcSDimitry Andric                           lldb_private::ThreadList &new_thread_list) override;
49*0eae32dcSDimitry Andric };
50*0eae32dcSDimitry Andric 
51*0eae32dcSDimitry Andric #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
52