/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Target/OperatingSystem.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===-- OperatingSystem.h ----------------------------------------------*- C++ |
2 | | //-*-===// |
3 | | // |
4 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
5 | | // See https://llvm.org/LICENSE.txt for license information. |
6 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | |
10 | | #ifndef LLDB_TARGET_OPERATINGSYSTEM_H |
11 | | #define LLDB_TARGET_OPERATINGSYSTEM_H |
12 | | |
13 | | #include "lldb/Core/PluginInterface.h" |
14 | | #include "lldb/lldb-private.h" |
15 | | |
16 | | namespace lldb_private { |
17 | | |
18 | | /// \class OperatingSystem OperatingSystem.h "lldb/Target/OperatingSystem.h" |
19 | | /// A plug-in interface definition class for halted OS helpers. |
20 | | /// |
21 | | /// Halted OS plug-ins can be used by any process to locate and create |
22 | | /// OS objects, like threads, during the lifetime of a debug session. |
23 | | /// This is commonly used when attaching to an operating system that is |
24 | | /// halted, such as when debugging over JTAG or connecting to low level kernel |
25 | | /// debug services. |
26 | | |
27 | | class OperatingSystem : public PluginInterface { |
28 | | public: |
29 | | /// Find a halted OS plugin for a given process. |
30 | | /// |
31 | | /// Scans the installed OperatingSystem plug-ins and tries to find an |
32 | | /// instance that matches the current target triple and executable. |
33 | | /// |
34 | | /// \param[in] process |
35 | | /// The process for which to try and locate a halted OS |
36 | | /// plug-in instance. |
37 | | /// |
38 | | /// \param[in] plugin_name |
39 | | /// An optional name of a specific halted OS plug-in that |
40 | | /// should be used. If NULL, pick the best plug-in. |
41 | | static OperatingSystem *FindPlugin(Process *process, const char *plugin_name); |
42 | | |
43 | | OperatingSystem(Process *process); |
44 | | |
45 | | // Plug-in Methods |
46 | | virtual bool UpdateThreadList(ThreadList &old_thread_list, |
47 | | ThreadList &real_thread_list, |
48 | | ThreadList &new_thread_list) = 0; |
49 | | |
50 | | virtual void ThreadWasSelected(Thread *thread) = 0; |
51 | | |
52 | | virtual lldb::RegisterContextSP |
53 | | CreateRegisterContextForThread(Thread *thread, |
54 | | lldb::addr_t reg_data_addr) = 0; |
55 | | |
56 | | virtual lldb::StopInfoSP CreateThreadStopReason(Thread *thread) = 0; |
57 | | |
58 | 0 | virtual lldb::ThreadSP CreateThread(lldb::tid_t tid, lldb::addr_t context) { |
59 | 0 | return lldb::ThreadSP(); |
60 | 0 | } |
61 | | |
62 | | virtual bool IsOperatingSystemPluginThread(const lldb::ThreadSP &thread_sp); |
63 | | |
64 | | protected: |
65 | | // Member variables. |
66 | | Process |
67 | | *m_process; ///< The process that this dynamic loader plug-in is tracking. |
68 | | }; |
69 | | |
70 | | } // namespace lldb_private |
71 | | |
72 | | #endif // LLDB_TARGET_OPERATINGSYSTEM_H |