xref: /openbsd-src/gnu/llvm/lldb/bindings/interface/SBThreadPlan.i (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
1061da546Spatrick //===-- SBThread.h ----------------------------------------------*- C++ -*-===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick #ifndef LLDB_SBThreadPlan_h_
10061da546Spatrick #define LLDB_SBThreadPlan_h_
11061da546Spatrick 
12061da546Spatrick #include "lldb/API/SBDefines.h"
13061da546Spatrick 
14061da546Spatrick #include <stdio.h>
15061da546Spatrick 
16061da546Spatrick namespace lldb {
17061da546Spatrick 
18061da546Spatrick %feature("docstring",
19061da546Spatrick "Represents a plan for the execution control of a given thread.
20061da546Spatrick 
21*be691f3bSpatrick See also :py:class:`SBThread` and :py:class:`SBFrame`."
22*be691f3bSpatrick ) SBThreadPlan;
23061da546Spatrick 
24061da546Spatrick class SBThreadPlan
25061da546Spatrick {
26061da546Spatrick 
27061da546Spatrick friend class lldb_private::ThreadPlan;
28061da546Spatrick 
29061da546Spatrick public:
30061da546Spatrick     SBThreadPlan ();
31061da546Spatrick 
32061da546Spatrick     SBThreadPlan (const lldb::SBThreadPlan &threadPlan);
33061da546Spatrick 
34061da546Spatrick     SBThreadPlan (const lldb::ThreadPlanSP& lldb_object_sp);
35061da546Spatrick 
36061da546Spatrick     SBThreadPlan (lldb::SBThread &thread, const char *class_name);
37061da546Spatrick 
38061da546Spatrick    ~SBThreadPlan ();
39061da546Spatrick 
40061da546Spatrick     bool
41061da546Spatrick     IsValid();
42061da546Spatrick 
43061da546Spatrick     bool
44061da546Spatrick     IsValid() const;
45061da546Spatrick 
46061da546Spatrick     explicit operator bool() const;
47061da546Spatrick 
48061da546Spatrick     void
49061da546Spatrick     Clear ();
50061da546Spatrick 
51061da546Spatrick     lldb::StopReason
52061da546Spatrick     GetStopReason();
53061da546Spatrick 
54061da546Spatrick     %feature("docstring", "
55061da546Spatrick     Get the number of words associated with the stop reason.
56061da546Spatrick     See also GetStopReasonDataAtIndex().") GetStopReasonDataCount;
57061da546Spatrick     size_t
58061da546Spatrick     GetStopReasonDataCount();
59061da546Spatrick 
60061da546Spatrick     %feature("docstring", "
61061da546Spatrick     Get information associated with a stop reason.
62061da546Spatrick 
63061da546Spatrick     Breakpoint stop reasons will have data that consists of pairs of
64061da546Spatrick     breakpoint IDs followed by the breakpoint location IDs (they always come
65061da546Spatrick     in pairs).
66061da546Spatrick 
67061da546Spatrick     Stop Reason              Count Data Type
68061da546Spatrick     ======================== ===== =========================================
69061da546Spatrick     eStopReasonNone          0
70061da546Spatrick     eStopReasonTrace         0
71061da546Spatrick     eStopReasonBreakpoint    N     duple: {breakpoint id, location id}
72061da546Spatrick     eStopReasonWatchpoint    1     watchpoint id
73061da546Spatrick     eStopReasonSignal        1     unix signal number
74061da546Spatrick     eStopReasonException     N     exception data
75061da546Spatrick     eStopReasonExec          0
76*be691f3bSpatrick     eStopReasonFork          1     pid of the child process
77*be691f3bSpatrick     eStopReasonVFork         1     pid of the child process
78*be691f3bSpatrick     eStopReasonVForkDone     0
79061da546Spatrick     eStopReasonPlanComplete  0") GetStopReasonDataAtIndex;
80061da546Spatrick     uint64_t
81061da546Spatrick     GetStopReasonDataAtIndex(uint32_t idx);
82061da546Spatrick 
83061da546Spatrick     SBThread
84061da546Spatrick     GetThread () const;
85061da546Spatrick 
86061da546Spatrick     bool
87061da546Spatrick     GetDescription (lldb::SBStream &description) const;
88061da546Spatrick 
89061da546Spatrick     void
90061da546Spatrick     SetPlanComplete (bool success);
91061da546Spatrick 
92061da546Spatrick     bool
93061da546Spatrick     IsPlanComplete();
94061da546Spatrick 
95061da546Spatrick     bool
96061da546Spatrick     IsPlanStale();
97061da546Spatrick 
98*be691f3bSpatrick     %feature("docstring", "Return whether this plan will ask to stop other threads when it runs.") GetStopOthers;
99*be691f3bSpatrick     bool
100*be691f3bSpatrick     GetStopOthers();
101*be691f3bSpatrick 
102*be691f3bSpatrick     %feature("docstring", "Set whether this plan will ask to stop other threads when it runs.")	GetStopOthers;
103*be691f3bSpatrick     void
104*be691f3bSpatrick     SetStopOthers(bool stop_others);
105*be691f3bSpatrick 
106061da546Spatrick     SBThreadPlan
107061da546Spatrick     QueueThreadPlanForStepOverRange (SBAddress &start_address,
108061da546Spatrick                                      lldb::addr_t range_size);
109061da546Spatrick 
110061da546Spatrick     SBThreadPlan
111061da546Spatrick     QueueThreadPlanForStepInRange (SBAddress &start_address,
112061da546Spatrick                                    lldb::addr_t range_size);
113061da546Spatrick 
114061da546Spatrick     SBThreadPlan
115061da546Spatrick     QueueThreadPlanForStepOut (uint32_t frame_idx_to_step_to, bool first_insn = false);
116061da546Spatrick 
117061da546Spatrick     SBThreadPlan
118061da546Spatrick     QueueThreadPlanForRunToAddress (SBAddress address);
119061da546Spatrick 
120061da546Spatrick     SBThreadPlan
121061da546Spatrick     QueueThreadPlanForStepScripted(const char *script_class_name);
122061da546Spatrick 
123061da546Spatrick     SBThreadPlan
124061da546Spatrick     QueueThreadPlanForStepScripted(const char *script_class_name,
125061da546Spatrick                                    SBError &error);
126061da546Spatrick     SBThreadPlan
127061da546Spatrick     QueueThreadPlanForStepScripted(const char *script_class_name,
128061da546Spatrick                                    SBStructuredData &args_data,
129061da546Spatrick                                    SBError &error);
130061da546Spatrick 
131061da546Spatrick 
132061da546Spatrick protected:
133061da546Spatrick     friend class SBBreakpoint;
134061da546Spatrick     friend class SBBreakpointLocation;
135061da546Spatrick     friend class SBFrame;
136061da546Spatrick     friend class SBProcess;
137061da546Spatrick     friend class SBDebugger;
138061da546Spatrick     friend class SBValue;
139061da546Spatrick     friend class lldb_private::QueueImpl;
140061da546Spatrick     friend class SBQueueItem;
141061da546Spatrick 
142061da546Spatrick private:
143061da546Spatrick     lldb::ThreadPlanSP m_opaque_sp;
144061da546Spatrick };
145061da546Spatrick 
146061da546Spatrick } // namespace lldb
147061da546Spatrick 
148061da546Spatrick #endif  // LLDB_SBThreadPlan_h_
149