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