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