19c7fbc3fSMichał Górny //===-- ThreadFreeBSDKernel.h ------------------------------------- C++ -*-===// 29c7fbc3fSMichał Górny // 39c7fbc3fSMichał Górny // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 49c7fbc3fSMichał Górny // See https://llvm.org/LICENSE.txt for license information. 59c7fbc3fSMichał Górny // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 69c7fbc3fSMichał Górny // 79c7fbc3fSMichał Górny //===----------------------------------------------------------------------===// 89c7fbc3fSMichał Górny 99c7fbc3fSMichał Górny #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H 109c7fbc3fSMichał Górny #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H 119c7fbc3fSMichał Górny 129c7fbc3fSMichał Górny #include "lldb/Target/Thread.h" 139c7fbc3fSMichał Górny 149c7fbc3fSMichał Górny class ThreadFreeBSDKernel : public lldb_private::Thread { 159c7fbc3fSMichał Górny public: 169c7fbc3fSMichał Górny ThreadFreeBSDKernel(lldb_private::Process &process, lldb::tid_t tid, 17*9b1d27b2SMichał Górny lldb::addr_t pcb_addr, std::string thread_name); 189c7fbc3fSMichał Górny 199c7fbc3fSMichał Górny ~ThreadFreeBSDKernel() override; 209c7fbc3fSMichał Górny 219c7fbc3fSMichał Górny void RefreshStateAfterStop() override; 229c7fbc3fSMichał Górny 239c7fbc3fSMichał Górny lldb::RegisterContextSP GetRegisterContext() override; 249c7fbc3fSMichał Górny 259c7fbc3fSMichał Górny lldb::RegisterContextSP 269c7fbc3fSMichał Górny CreateRegisterContextForFrame(lldb_private::StackFrame *frame) override; 279c7fbc3fSMichał Górny GetName()28*9b1d27b2SMichał Górny const char *GetName() override { 29*9b1d27b2SMichał Górny if (m_thread_name.empty()) 30*9b1d27b2SMichał Górny return nullptr; 31*9b1d27b2SMichał Górny return m_thread_name.c_str(); 32*9b1d27b2SMichał Górny } 33*9b1d27b2SMichał Górny SetName(const char * name)34*9b1d27b2SMichał Górny void SetName(const char *name) override { 35*9b1d27b2SMichał Górny if (name && name[0]) 36*9b1d27b2SMichał Górny m_thread_name.assign(name); 37*9b1d27b2SMichał Górny else 38*9b1d27b2SMichał Górny m_thread_name.clear(); 39*9b1d27b2SMichał Górny } 40*9b1d27b2SMichał Górny 419c7fbc3fSMichał Górny protected: 429c7fbc3fSMichał Górny bool CalculateStopInfo() override; 439c7fbc3fSMichał Górny 449c7fbc3fSMichał Górny private: 45*9b1d27b2SMichał Górny std::string m_thread_name; 469c7fbc3fSMichał Górny lldb::RegisterContextSP m_thread_reg_ctx_sp; 479c7fbc3fSMichał Górny lldb::addr_t m_pcb_addr; 489c7fbc3fSMichał Górny }; 499c7fbc3fSMichał Górny 509c7fbc3fSMichał Górny #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_THREADFREEBSDKERNEL_H 51