1 /* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "src/trace_processor/importers/proto/additional_modules.h" 18 #include "src/trace_processor/importers/etw/etw_module_impl.h" 19 #include "src/trace_processor/importers/ftrace/ftrace_module_impl.h" 20 #include "src/trace_processor/importers/proto/android_camera_event_module.h" 21 #include "src/trace_processor/importers/proto/android_probes_module.h" 22 #include "src/trace_processor/importers/proto/graphics_event_module.h" 23 #include "src/trace_processor/importers/proto/heap_graph_module.h" 24 #include "src/trace_processor/importers/proto/metadata_module.h" 25 #include "src/trace_processor/importers/proto/multi_machine_trace_manager.h" 26 #include "src/trace_processor/importers/proto/network_trace_module.h" 27 #include "src/trace_processor/importers/proto/pixel_modem_module.h" 28 #include "src/trace_processor/importers/proto/statsd_module.h" 29 #include "src/trace_processor/importers/proto/system_probes_module.h" 30 #include "src/trace_processor/importers/proto/translation_table_module.h" 31 #include "src/trace_processor/importers/proto/v8_module.h" 32 #include "src/trace_processor/importers/proto/winscope/winscope_module.h" 33 34 namespace perfetto { 35 namespace trace_processor { 36 RegisterAdditionalModules(TraceProcessorContext * context)37void RegisterAdditionalModules(TraceProcessorContext* context) { 38 context->modules.emplace_back(new AndroidProbesModule(context)); 39 context->modules.emplace_back(new NetworkTraceModule(context)); 40 context->modules.emplace_back(new GraphicsEventModule(context)); 41 context->modules.emplace_back(new HeapGraphModule(context)); 42 context->modules.emplace_back(new SystemProbesModule(context)); 43 context->modules.emplace_back(new TranslationTableModule(context)); 44 context->modules.emplace_back(new StatsdModule(context)); 45 context->modules.emplace_back(new AndroidCameraEventModule(context)); 46 context->modules.emplace_back(new MetadataModule(context)); 47 context->modules.emplace_back(new V8Module(context)); 48 context->modules.emplace_back(new WinscopeModule(context)); 49 context->modules.emplace_back(new PixelModemModule(context)); 50 51 // Ftrace/Etw modules are special, because it has one extra method for parsing 52 // ftrace/etw packets. So we need to store a pointer to it separately. 53 context->modules.emplace_back(new FtraceModuleImpl(context)); 54 context->ftrace_module = 55 static_cast<FtraceModule*>(context->modules.back().get()); 56 context->modules.emplace_back(new EtwModuleImpl(context)); 57 context->etw_module = static_cast<EtwModule*>(context->modules.back().get()); 58 59 if (context->multi_machine_trace_manager) { 60 context->multi_machine_trace_manager->EnableAdditionalModules( 61 RegisterAdditionalModules); 62 } 63 } 64 65 } // namespace trace_processor 66 } // namespace perfetto 67