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 
LLDB_PLUGIN_DEFINE(TraceExporterCTF)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 
Initialize()32 void TraceExporterCTF::Initialize() {
33   PluginManager::RegisterPlugin(GetPluginNameStatic(),
34                                 "Chrome Trace Format Exporter", CreateInstance,
35                                 GetThreadTraceExportCommand);
36 }
37 
Terminate()38 void TraceExporterCTF::Terminate() {
39   PluginManager::UnregisterPlugin(CreateInstance);
40 }
41 
GetPluginNameStatic()42 ConstString TraceExporterCTF::GetPluginNameStatic() {
43   static ConstString g_name("ctf");
44   return g_name;
45 }
46 
GetPluginName()47 ConstString TraceExporterCTF::GetPluginName() { return GetPluginNameStatic(); }
48 
GetPluginVersion()49 uint32_t TraceExporterCTF::GetPluginVersion() { return 1; }
50 
CreateInstance()51 Expected<TraceExporterUP> TraceExporterCTF::CreateInstance() {
52   return std::make_unique<TraceExporterCTF>();
53 }
54