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