blob: fc68cb73db919ff60b52bd63c9df10bdbd9160f3 [file] [log] [blame]
Adrian McCarthy18a9135d2015-10-28 18:21:45 +00001//===-- TargetThreadWindows.h -----------------------------------*- C++ -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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-exception
Adrian McCarthy18a9135d2015-10-28 18:21:45 +00006//
7//===----------------------------------------------------------------------===//
8
9#ifndef liblldb_Plugins_Process_Windows_TargetThreadWindows_H_
10#define liblldb_Plugins_Process_Windows_TargetThreadWindows_H_
11
12//#include "ForwardDecl.h"
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000013#include "lldb/Host/HostThread.h"
14#include "lldb/Target/Thread.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000015#include "lldb/lldb-forward.h"
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000016
Adrian McCarthy4ad5def2016-11-23 16:26:37 +000017#include "RegisterContextWindows.h"
18
Kate Stoneb9c1b512016-09-06 20:57:50 +000019namespace lldb_private {
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000020class ProcessWindows;
21class HostThread;
22class StackFrame;
23
Kate Stoneb9c1b512016-09-06 20:57:50 +000024class TargetThreadWindows : public lldb_private::Thread {
25public:
26 TargetThreadWindows(ProcessWindows &process, const HostThread &thread);
27 virtual ~TargetThreadWindows();
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000028
Kate Stoneb9c1b512016-09-06 20:57:50 +000029 // lldb_private::Thread overrides
30 void RefreshStateAfterStop() override;
31 void WillResume(lldb::StateType resume_state) override;
32 void DidStop() override;
Adrian McCarthy4ad5def2016-11-23 16:26:37 +000033 lldb::RegisterContextSP GetRegisterContext() override;
34 lldb::RegisterContextSP
35 CreateRegisterContextForFrame(StackFrame *frame) override;
Kate Stoneb9c1b512016-09-06 20:57:50 +000036 bool CalculateStopInfo() override;
37 Unwind *GetUnwinder() override;
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000038
Stella Stamenova0fd67b52018-05-17 21:34:24 +000039 Status DoResume();
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000040
Kate Stoneb9c1b512016-09-06 20:57:50 +000041 HostThread GetHostThread() const { return m_host_thread; }
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000042
Kate Stoneb9c1b512016-09-06 20:57:50 +000043private:
Stella Stamenova45d81342018-07-10 22:05:33 +000044 lldb::RegisterContextSP m_thread_reg_ctx_sp;
Kate Stoneb9c1b512016-09-06 20:57:50 +000045 HostThread m_host_thread;
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000046};
Stella Stamenova45d81342018-07-10 22:05:33 +000047} // namespace lldb_private
Adrian McCarthy18a9135d2015-10-28 18:21:45 +000048
49#endif