51 lines · c
1//===-- ThreadFreeBSDKernel.h ------------------------------------- C++ -*-===//2//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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H10#define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H11 12#include "lldb/Target/Thread.h"13 14class ThreadFreeBSDKernel : public lldb_private::Thread {15public:16 ThreadFreeBSDKernel(lldb_private::Process &process, lldb::tid_t tid,17 lldb::addr_t pcb_addr, std::string thread_name);18 19 ~ThreadFreeBSDKernel() override;20 21 void RefreshStateAfterStop() override;22 23 lldb::RegisterContextSP GetRegisterContext() override;24 25 lldb::RegisterContextSP26 CreateRegisterContextForFrame(lldb_private::StackFrame *frame) override;27 28 const char *GetName() override {29 if (m_thread_name.empty())30 return nullptr;31 return m_thread_name.c_str();32 }33 34 void SetName(const char *name) override {35 if (name && name[0])36 m_thread_name.assign(name);37 else38 m_thread_name.clear();39 }40 41protected:42 bool CalculateStopInfo() override;43 44private:45 std::string m_thread_name;46 lldb::RegisterContextSP m_thread_reg_ctx_sp;47 lldb::addr_t m_pcb_addr;48};49 50#endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H51