68 lines · c
1//===-- ThreadMachCore.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_MACH_CORE_THREADMACHCORE_H10#define LLDB_SOURCE_PLUGINS_PROCESS_MACH_CORE_THREADMACHCORE_H11 12#include <string>13 14#include "lldb/Target/Thread.h"15 16class ProcessMachCore;17 18class ThreadMachCore : public lldb_private::Thread {19public:20 ThreadMachCore(lldb_private::Process &process, lldb::tid_t tid,21 uint32_t objfile_lc_thread_idx);22 23 ~ThreadMachCore() override;24 25 void RefreshStateAfterStop() override;26 27 const char *GetName() override;28 29 lldb::RegisterContextSP GetRegisterContext() override;30 31 lldb::RegisterContextSP32 CreateRegisterContextForFrame(lldb_private::StackFrame *frame) override;33 34 static bool ThreadIDIsValid(lldb::tid_t thread);35 36 bool ShouldStop(bool &step_more);37 38 const char *GetBasicInfoAsString();39 40 void SetName(const char *name) override {41 if (name && name[0])42 m_thread_name.assign(name);43 else44 m_thread_name.clear();45 }46 47 lldb::addr_t GetThreadDispatchQAddr() { return m_thread_dispatch_qaddr; }48 49 void SetThreadDispatchQAddr(lldb::addr_t thread_dispatch_qaddr) {50 m_thread_dispatch_qaddr = thread_dispatch_qaddr;51 }52 53protected:54 friend class ProcessMachCore;55 56 // Member variables.57 std::string m_thread_name;58 std::string m_dispatch_queue_name;59 lldb::addr_t m_thread_dispatch_qaddr;60 lldb::RegisterContextSP m_thread_reg_ctx_sp;61 uint32_t m_objfile_lc_thread_idx;62 63 // Protected member functions.64 bool CalculateStopInfo() override;65};66 67#endif // LLDB_SOURCE_PLUGINS_PROCESS_MACH_CORE_THREADMACHCORE_H68