xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/TraceExporter/ctf/CommandObjectThreadTraceExportCTF.h (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1be691f3bSpatrick //===-- CommandObjectThreadTraceExportCTF.h -------------------*- C++ //-*-===//
2be691f3bSpatrick //
3be691f3bSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4be691f3bSpatrick // See https://llvm.org/LICENSE.txt for license information.
5be691f3bSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6be691f3bSpatrick //
7be691f3bSpatrick //===----------------------------------------------------------------------===//
8be691f3bSpatrick 
9be691f3bSpatrick #ifndef LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_COMMANDOBJECTTHREADTRACEEXPORTCTF_H
10be691f3bSpatrick #define LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_COMMANDOBJECTTHREADTRACEEXPORTCTF_H
11be691f3bSpatrick 
12be691f3bSpatrick #include "TraceExporterCTF.h"
13be691f3bSpatrick #include "lldb/Interpreter/CommandInterpreter.h"
14be691f3bSpatrick #include "lldb/Interpreter/CommandReturnObject.h"
15*f6aab3d8Srobert #include <optional>
16be691f3bSpatrick 
17be691f3bSpatrick namespace lldb_private {
18be691f3bSpatrick namespace ctf {
19be691f3bSpatrick 
20be691f3bSpatrick class CommandObjectThreadTraceExportCTF : public CommandObjectParsed {
21be691f3bSpatrick public:
22be691f3bSpatrick   class CommandOptions : public Options {
23be691f3bSpatrick   public:
CommandOptions()24be691f3bSpatrick     CommandOptions() : Options() { OptionParsingStarting(nullptr); }
25be691f3bSpatrick 
26be691f3bSpatrick     Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
27be691f3bSpatrick                           ExecutionContext *execution_context) override;
28be691f3bSpatrick 
29be691f3bSpatrick     void OptionParsingStarting(ExecutionContext *execution_context) override;
30be691f3bSpatrick 
31be691f3bSpatrick     llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
32be691f3bSpatrick 
33*f6aab3d8Srobert     std::optional<size_t> m_thread_index;
34*f6aab3d8Srobert     std::string m_file;
35be691f3bSpatrick   };
36be691f3bSpatrick 
CommandObjectThreadTraceExportCTF(CommandInterpreter & interpreter)37be691f3bSpatrick   CommandObjectThreadTraceExportCTF(CommandInterpreter &interpreter)
38be691f3bSpatrick       : CommandObjectParsed(
39be691f3bSpatrick             interpreter, "thread trace export ctf",
40be691f3bSpatrick             "Export a given thread's trace to Chrome Trace Format",
41be691f3bSpatrick             "thread trace export ctf [<ctf-options>]",
42be691f3bSpatrick             lldb::eCommandRequiresProcess | lldb::eCommandTryTargetAPILock |
43be691f3bSpatrick                 lldb::eCommandProcessMustBeLaunched |
44*f6aab3d8Srobert                 lldb::eCommandProcessMustBePaused |
45*f6aab3d8Srobert                 lldb::eCommandProcessMustBeTraced),
46be691f3bSpatrick         m_options() {}
47be691f3bSpatrick 
GetOptions()48be691f3bSpatrick   Options *GetOptions() override { return &m_options; }
49be691f3bSpatrick 
50be691f3bSpatrick protected:
51be691f3bSpatrick   bool DoExecute(Args &command, CommandReturnObject &result) override;
52be691f3bSpatrick 
53be691f3bSpatrick   CommandOptions m_options;
54be691f3bSpatrick };
55be691f3bSpatrick 
56be691f3bSpatrick } // namespace ctf
57be691f3bSpatrick } // namespace lldb_private
58be691f3bSpatrick 
59be691f3bSpatrick #endif // LLDB_SOURCE_PLUGINS_TRACE_INTEL_PT_COMMANDOBJECTTHREADTRACEEXPORTCTF_H
60