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