SBThread.h revision 63094e0bb161580564954dee512955c1c79d3476
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBThread.h ----------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBThread_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBThread_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1374089e10cfbb4665da128f26d78c2b4006b5f1c6Christopher Friesen#include "lldb/API/SBDefines.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
157884ab842f7f0be6c583eac2904f5763706816bcEli Friedman#include <stdio.h>
167884ab842f7f0be6c583eac2904f5763706816bcEli Friedman
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBFrame;
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBThread
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBThread ();
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBThread (const lldb::SBThread &thread);
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner   ~SBThread();
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid() const;
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::StopReason
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetStopReason();
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    size_t
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetStopDescription (char *dst, size_t dst_len);
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::tid_t
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetThreadID () const;
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetIndexID () const;
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const char *
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetName () const;
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const char *
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetQueueName() const;
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    DisplayFramesForCurrentContext (FILE *out,
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                    FILE *err,
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                    uint32_t first_frame,
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                    uint32_t num_frames,
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                    bool show_frame_info,
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                    uint32_t num_frames_with_source,
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                    uint32_t source_lines_before = 3,
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                    uint32_t source_lines_after = 3);
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    DisplaySingleFrameForCurrentContext (FILE *out,
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                         FILE *err,
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                         lldb::SBFrame &frame,
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                         bool show_frame_info,
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                         bool show_source,
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                         uint32_t source_lines_after,
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                         uint32_t source_lines_before);
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepOver (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepInto (lldb::RunMode stop_other_threads = lldb::eOnlyDuringStepping);
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepOut ();
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StepInstruction(bool step_over);
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    RunToAddress (lldb::addr_t addr);
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetNumFrames ();
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBFrame
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetFrameAtIndex (uint32_t idx);
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::SBProcess
9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetProcess ();
9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SWIG
9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb::SBThread &
9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator = (const lldb::SBThread &rhs);
9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator == (const lldb::SBThread &rhs) const;
10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator != (const lldb::SBThread &rhs) const;
10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBBreakpoint;
11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBBreakpointLocation;
11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBFrame;
11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBProcess;
11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBDebugger;
11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    friend class SBValue;
11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Thread *
11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetLLDBObjectPtr ();
11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SWIG
12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::Thread *
12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator->() const;
12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::Thread &
12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator*() const;
12624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Thread *
12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator->();
13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Thread &
13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator*();
13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
13524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SBThread (const lldb::ThreadSP& lldb_object_sp);
13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetThread (const lldb::ThreadSP& lldb_object_sp);
14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Classes that inherit from Thread can see and modify these
14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
14663094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb::ThreadSP m_opaque_sp;
14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
14824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
14924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb
15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // LLDB_SBThread_h_
152