1 //===-- TraceExporterCTF.cpp ----------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "TraceExporterCTF.h"
10 
11 #include <memory>
12 
13 #include "CommandObjectThreadTraceExportCTF.h"
14 #include "lldb/Core/PluginManager.h"
15 
16 using namespace lldb;
17 using namespace lldb_private;
18 using namespace lldb_private::ctf;
19 using namespace llvm;
20 
21 LLDB_PLUGIN_DEFINE(TraceExporterCTF)
22 
23 //------------------------------------------------------------------
24 // PluginInterface protocol
25 //------------------------------------------------------------------
26 
27 static CommandObjectSP
28 GetThreadTraceExportCommand(CommandInterpreter &interpreter) {
29   return std::make_shared<CommandObjectThreadTraceExportCTF>(interpreter);
30 }
31 
32 void TraceExporterCTF::Initialize() {
33   PluginManager::RegisterPlugin(GetPluginNameStatic(),
34                                 "Chrome Trace Format Exporter", CreateInstance,
35                                 GetThreadTraceExportCommand);
36 }
37 
38 void TraceExporterCTF::Terminate() {
39   PluginManager::UnregisterPlugin(CreateInstance);
40 }
41 
42 Expected<TraceExporterUP> TraceExporterCTF::CreateInstance() {
43   return std::make_unique<TraceExporterCTF>();
44 }
45