1*f6aab3d8Srobert //===-- ProcessFreeBSDKernel.h ----------------------------------*- C++ -*-===//
2*f6aab3d8Srobert //
3*f6aab3d8Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*f6aab3d8Srobert // See https://llvm.org/LICENSE.txt for license information.
5*f6aab3d8Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*f6aab3d8Srobert //
7*f6aab3d8Srobert //===----------------------------------------------------------------------===//
8*f6aab3d8Srobert 
9*f6aab3d8Srobert #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
10*f6aab3d8Srobert #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
11*f6aab3d8Srobert 
12*f6aab3d8Srobert #include "lldb/Target/PostMortemProcess.h"
13*f6aab3d8Srobert 
14*f6aab3d8Srobert class ProcessFreeBSDKernel : public lldb_private::PostMortemProcess {
15*f6aab3d8Srobert public:
16*f6aab3d8Srobert   ProcessFreeBSDKernel(lldb::TargetSP target_sp, lldb::ListenerSP listener);
17*f6aab3d8Srobert 
18*f6aab3d8Srobert   static lldb::ProcessSP
19*f6aab3d8Srobert   CreateInstance(lldb::TargetSP target_sp, lldb::ListenerSP listener,
20*f6aab3d8Srobert                  const lldb_private::FileSpec *crash_file_path,
21*f6aab3d8Srobert                  bool can_connect);
22*f6aab3d8Srobert 
23*f6aab3d8Srobert   static void Initialize();
24*f6aab3d8Srobert 
25*f6aab3d8Srobert   static void Terminate();
26*f6aab3d8Srobert 
GetPluginNameStatic()27*f6aab3d8Srobert   static llvm::StringRef GetPluginNameStatic() { return "freebsd-kernel"; }
28*f6aab3d8Srobert 
GetPluginDescriptionStatic()29*f6aab3d8Srobert   static llvm::StringRef GetPluginDescriptionStatic() {
30*f6aab3d8Srobert     return "FreeBSD kernel vmcore debugging plug-in.";
31*f6aab3d8Srobert   }
32*f6aab3d8Srobert 
GetPluginName()33*f6aab3d8Srobert   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
34*f6aab3d8Srobert 
35*f6aab3d8Srobert   lldb_private::Status DoDestroy() override;
36*f6aab3d8Srobert 
37*f6aab3d8Srobert   bool CanDebug(lldb::TargetSP target_sp,
38*f6aab3d8Srobert                 bool plugin_specified_by_name) override;
39*f6aab3d8Srobert 
40*f6aab3d8Srobert   void RefreshStateAfterStop() override;
41*f6aab3d8Srobert 
42*f6aab3d8Srobert   lldb_private::Status DoLoadCore() override;
43*f6aab3d8Srobert 
44*f6aab3d8Srobert   lldb_private::DynamicLoader *GetDynamicLoader() override;
45*f6aab3d8Srobert 
46*f6aab3d8Srobert protected:
47*f6aab3d8Srobert   bool DoUpdateThreadList(lldb_private::ThreadList &old_thread_list,
48*f6aab3d8Srobert                           lldb_private::ThreadList &new_thread_list) override;
49*f6aab3d8Srobert 
50*f6aab3d8Srobert   lldb::addr_t FindSymbol(const char* name);
51*f6aab3d8Srobert };
52*f6aab3d8Srobert 
53*f6aab3d8Srobert #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_PROCESSFREEBSDKERNEL_H
54