trace_processor: Remove PERFETTO_TP_FTRACE build flag
Bug: 141459049
Change-Id: Iabfa2b2058511a6661bc4b41f91d2ea1727d8aeb
diff --git a/Android.bp b/Android.bp
index 40d42c4..7cd8b64 100644
--- a/Android.bp
+++ b/Android.bp
@@ -5772,6 +5772,12 @@
filegroup {
name: "perfetto_src_trace_processor_storage_full",
srcs: [
+ "src/trace_processor/importers/ftrace/binder_tracker.cc",
+ "src/trace_processor/importers/ftrace/ftrace_descriptors.cc",
+ "src/trace_processor/importers/ftrace/ftrace_module_impl.cc",
+ "src/trace_processor/importers/ftrace/ftrace_parser.cc",
+ "src/trace_processor/importers/ftrace/ftrace_tokenizer.cc",
+ "src/trace_processor/importers/ftrace/sched_event_tracker.cc",
"src/trace_processor/importers/proto/android_probes_module.cc",
"src/trace_processor/importers/proto/android_probes_parser.cc",
"src/trace_processor/importers/proto/graphics_event_module.cc",
@@ -5782,7 +5788,10 @@
"src/trace_processor/importers/proto/system_probes_module.cc",
"src/trace_processor/importers/proto/system_probes_parser.cc",
"src/trace_processor/importers/proto/vulkan_memory_tracker.cc",
+ "src/trace_processor/importers/systrace/systrace_parser.cc",
+ "src/trace_processor/importers/systrace/systrace_trace_parser.cc",
"src/trace_processor/register_additional_modules.cc",
+ "src/trace_processor/syscall_tracker.cc",
],
}
@@ -5798,13 +5807,7 @@
"src/trace_processor/ftrace_utils.cc",
"src/trace_processor/gzip_trace_parser.cc",
"src/trace_processor/heap_profile_tracker.cc",
- "src/trace_processor/importers/ftrace/binder_tracker.cc",
- "src/trace_processor/importers/ftrace/ftrace_descriptors.cc",
"src/trace_processor/importers/ftrace/ftrace_module.cc",
- "src/trace_processor/importers/ftrace/ftrace_module_impl.cc",
- "src/trace_processor/importers/ftrace/ftrace_parser.cc",
- "src/trace_processor/importers/ftrace/ftrace_tokenizer.cc",
- "src/trace_processor/importers/ftrace/sched_event_tracker.cc",
"src/trace_processor/importers/fuchsia/fuchsia_provider_view.cc",
"src/trace_processor/importers/fuchsia/fuchsia_trace_parser.cc",
"src/trace_processor/importers/fuchsia/fuchsia_trace_tokenizer.cc",
@@ -5816,12 +5819,9 @@
"src/trace_processor/importers/proto/track_event_module.cc",
"src/trace_processor/importers/proto/track_event_parser.cc",
"src/trace_processor/importers/proto/track_event_tokenizer.cc",
- "src/trace_processor/importers/systrace/systrace_parser.cc",
- "src/trace_processor/importers/systrace/systrace_trace_parser.cc",
"src/trace_processor/process_tracker.cc",
"src/trace_processor/slice_tracker.cc",
"src/trace_processor/stack_profile_tracker.cc",
- "src/trace_processor/syscall_tracker.cc",
"src/trace_processor/trace_processor_context.cc",
"src/trace_processor/trace_processor_storage.cc",
"src/trace_processor/trace_processor_storage_impl.cc",
diff --git a/BUILD b/BUILD
index 70f43b5..140bbaa 100644
--- a/BUILD
+++ b/BUILD
@@ -790,6 +790,18 @@
filegroup(
name = "src_trace_processor_storage_full",
srcs = [
+ "src/trace_processor/importers/ftrace/binder_tracker.cc",
+ "src/trace_processor/importers/ftrace/binder_tracker.h",
+ "src/trace_processor/importers/ftrace/ftrace_descriptors.cc",
+ "src/trace_processor/importers/ftrace/ftrace_descriptors.h",
+ "src/trace_processor/importers/ftrace/ftrace_module_impl.cc",
+ "src/trace_processor/importers/ftrace/ftrace_module_impl.h",
+ "src/trace_processor/importers/ftrace/ftrace_parser.cc",
+ "src/trace_processor/importers/ftrace/ftrace_parser.h",
+ "src/trace_processor/importers/ftrace/ftrace_tokenizer.cc",
+ "src/trace_processor/importers/ftrace/ftrace_tokenizer.h",
+ "src/trace_processor/importers/ftrace/sched_event_tracker.cc",
+ "src/trace_processor/importers/ftrace/sched_event_tracker.h",
"src/trace_processor/importers/proto/android_probes_module.cc",
"src/trace_processor/importers/proto/android_probes_module.h",
"src/trace_processor/importers/proto/android_probes_parser.cc",
@@ -810,8 +822,17 @@
"src/trace_processor/importers/proto/system_probes_parser.h",
"src/trace_processor/importers/proto/vulkan_memory_tracker.cc",
"src/trace_processor/importers/proto/vulkan_memory_tracker.h",
+ "src/trace_processor/importers/systrace/systrace_parser.cc",
+ "src/trace_processor/importers/systrace/systrace_parser.h",
+ "src/trace_processor/importers/systrace/systrace_trace_parser.cc",
+ "src/trace_processor/importers/systrace/systrace_trace_parser.h",
"src/trace_processor/register_additional_modules.cc",
"src/trace_processor/register_additional_modules.h",
+ "src/trace_processor/syscall_tracker.cc",
+ "src/trace_processor/syscalls_aarch32.h",
+ "src/trace_processor/syscalls_aarch64.h",
+ "src/trace_processor/syscalls_armeabi.h",
+ "src/trace_processor/syscalls_x86_64.h",
],
)
@@ -836,19 +857,8 @@
"src/trace_processor/gzip_trace_parser.h",
"src/trace_processor/heap_profile_tracker.cc",
"src/trace_processor/heap_profile_tracker.h",
- "src/trace_processor/importers/ftrace/binder_tracker.cc",
- "src/trace_processor/importers/ftrace/binder_tracker.h",
- "src/trace_processor/importers/ftrace/ftrace_descriptors.cc",
- "src/trace_processor/importers/ftrace/ftrace_descriptors.h",
"src/trace_processor/importers/ftrace/ftrace_module.cc",
"src/trace_processor/importers/ftrace/ftrace_module.h",
- "src/trace_processor/importers/ftrace/ftrace_module_impl.cc",
- "src/trace_processor/importers/ftrace/ftrace_parser.cc",
- "src/trace_processor/importers/ftrace/ftrace_parser.h",
- "src/trace_processor/importers/ftrace/ftrace_tokenizer.cc",
- "src/trace_processor/importers/ftrace/ftrace_tokenizer.h",
- "src/trace_processor/importers/ftrace/sched_event_tracker.cc",
- "src/trace_processor/importers/ftrace/sched_event_tracker.h",
"src/trace_processor/importers/fuchsia/fuchsia_provider_view.cc",
"src/trace_processor/importers/fuchsia/fuchsia_provider_view.h",
"src/trace_processor/importers/fuchsia/fuchsia_trace_parser.cc",
@@ -880,10 +890,6 @@
"src/trace_processor/importers/proto/track_event_parser.h",
"src/trace_processor/importers/proto/track_event_tokenizer.cc",
"src/trace_processor/importers/proto/track_event_tokenizer.h",
- "src/trace_processor/importers/systrace/systrace_parser.cc",
- "src/trace_processor/importers/systrace/systrace_parser.h",
- "src/trace_processor/importers/systrace/systrace_trace_parser.cc",
- "src/trace_processor/importers/systrace/systrace_trace_parser.h",
"src/trace_processor/metadata.h",
"src/trace_processor/process_tracker.cc",
"src/trace_processor/process_tracker.h",
@@ -892,12 +898,7 @@
"src/trace_processor/stack_profile_tracker.cc",
"src/trace_processor/stack_profile_tracker.h",
"src/trace_processor/stats.h",
- "src/trace_processor/syscall_tracker.cc",
"src/trace_processor/syscall_tracker.h",
- "src/trace_processor/syscalls_aarch32.h",
- "src/trace_processor/syscalls_aarch64.h",
- "src/trace_processor/syscalls_armeabi.h",
- "src/trace_processor/syscalls_x86_64.h",
"src/trace_processor/timestamped_trace_piece.h",
"src/trace_processor/trace_blob_view.h",
"src/trace_processor/trace_parser.h",
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
index 4e86d3b..dd520fa 100644
--- a/gn/BUILD.gn
+++ b/gn/BUILD.gn
@@ -82,12 +82,10 @@
"PERFETTO_TP_PERCENTILE=$enable_perfetto_trace_processor_percentile",
"PERFETTO_TP_LINENOISE=$enable_perfetto_trace_processor_linenoise",
"PERFETTO_TP_METRICS=$enable_perfetto_trace_processor_metrics",
- "PERFETTO_TP_FTRACE=$enable_perfetto_trace_processor_ftrace",
"PERFETTO_TP_HTTPD=$perfetto_tp_httpd",
"PERFETTO_TP_JSON=$enable_perfetto_trace_processor_json",
"PERFETTO_TP_JSON_IMPORT=$enable_perfetto_trace_processor_json_import",
"PERFETTO_TP_FUCHSIA=$enable_perfetto_trace_processor_fuchsia",
- "PERFETTO_TP_SYSCALLS=$enable_perfetto_trace_processor_syscalls",
"PERFETTO_LOCAL_SYMBOLIZER=$perfetto_local_symbolizer",
]
diff --git a/gn/perfetto.gni b/gn/perfetto.gni
index cc1232f..f90d093 100644
--- a/gn/perfetto.gni
+++ b/gn/perfetto.gni
@@ -213,10 +213,6 @@
perfetto_build_standalone && enable_perfetto_trace_processor &&
(is_linux || is_android || is_mac)
- # Enables ftrace support in the trace processor.
- enable_perfetto_trace_processor_ftrace =
- enable_perfetto_trace_processor && !(build_with_chromium && is_android)
-
# Enables JSON support in the trace processor. Required for JSON trace import
# and export. Importer support can also be disabled using
# |enable_perfetto_trace_processor_json_import|.
@@ -239,11 +235,6 @@
enable_perfetto_trace_processor_json &&
!(build_with_chromium && is_android)
- # Enables syscall support in trace processor. Required for ftrace, system
- # probes, and android probes support.
- enable_perfetto_trace_processor_syscalls =
- enable_perfetto_trace_processor_ftrace
-
# Enables metrics support in the trace processor, which require SQL support.
enable_perfetto_trace_processor_metrics =
enable_perfetto_trace_processor_sqlite
@@ -299,7 +290,3 @@
assert(!enable_perfetto_tools_trace_to_text ||
enable_perfetto_trace_processor_sqlite)
assert(!enable_perfetto_ui || enable_perfetto_trace_processor_sqlite)
-
-# Syscall support is required for ftrace, system probes, and android probes.
-assert(enable_perfetto_trace_processor_syscalls ||
- !enable_perfetto_trace_processor_ftrace)
diff --git a/include/perfetto/base/build_configs/android_tree/perfetto_build_flags.h b/include/perfetto/base/build_configs/android_tree/perfetto_build_flags.h
index e9cae4f..fc325f0 100644
--- a/include/perfetto/base/build_configs/android_tree/perfetto_build_flags.h
+++ b/include/perfetto/base/build_configs/android_tree/perfetto_build_flags.h
@@ -36,12 +36,10 @@
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_PERCENTILE() (0)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_LINENOISE() (0)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_METRICS() (1)
-#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_FTRACE() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_HTTPD() (0)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_JSON() (0)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_JSON_IMPORT() (0)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_FUCHSIA() (1)
-#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_SYSCALLS() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_LOCAL_SYMBOLIZER() (PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX())
// clang-format on
diff --git a/include/perfetto/base/build_configs/bazel/perfetto_build_flags.h b/include/perfetto/base/build_configs/bazel/perfetto_build_flags.h
index baa1056..8728e99 100644
--- a/include/perfetto/base/build_configs/bazel/perfetto_build_flags.h
+++ b/include/perfetto/base/build_configs/bazel/perfetto_build_flags.h
@@ -36,12 +36,10 @@
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_PERCENTILE() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_LINENOISE() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_METRICS() (1)
-#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_FTRACE() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_HTTPD() (PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() || PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() || PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX())
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_JSON() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_JSON_IMPORT() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_FUCHSIA() (1)
-#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_SYSCALLS() (1)
#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_LOCAL_SYMBOLIZER() (PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX())
// clang-format on
diff --git a/src/trace_processor/BUILD.gn b/src/trace_processor/BUILD.gn
index cd48854..f369856 100644
--- a/src/trace_processor/BUILD.gn
+++ b/src/trace_processor/BUILD.gn
@@ -92,12 +92,8 @@
"gzip_trace_parser.h",
"heap_profile_tracker.cc",
"heap_profile_tracker.h",
- "importers/ftrace/ftrace_descriptors.h",
"importers/ftrace/ftrace_module.cc",
"importers/ftrace/ftrace_module.h",
- "importers/ftrace/ftrace_parser.h",
- "importers/ftrace/ftrace_tokenizer.h",
- "importers/ftrace/sched_event_tracker.h",
"importers/fuchsia/fuchsia_provider_view.h",
"importers/proto/args_table_utils.cc",
"importers/proto/args_table_utils.h",
@@ -116,8 +112,6 @@
"importers/proto/track_event_parser.h",
"importers/proto/track_event_tokenizer.cc",
"importers/proto/track_event_tokenizer.h",
- "importers/systrace/systrace_parser.h",
- "importers/systrace/systrace_trace_parser.h",
"metadata.h",
"process_tracker.cc",
"process_tracker.h",
@@ -181,25 +175,9 @@
]
deps += [ "../../gn:jsoncpp" ]
}
- if (enable_perfetto_trace_processor_ftrace) {
- sources += [
- "importers/ftrace/binder_tracker.cc",
- "importers/ftrace/binder_tracker.h",
- "importers/ftrace/ftrace_descriptors.cc",
- "importers/ftrace/ftrace_module_impl.cc",
- "importers/ftrace/ftrace_parser.cc",
- "importers/ftrace/ftrace_tokenizer.cc",
- "importers/ftrace/sched_event_tracker.cc",
- "importers/systrace/systrace_parser.cc",
- "importers/systrace/systrace_trace_parser.cc",
- ]
- }
- if (enable_perfetto_trace_processor_ftrace ||
- enable_perfetto_trace_processor_fuchsia) {
- sources += [ "ftrace_utils.cc" ]
- }
if (enable_perfetto_trace_processor_fuchsia) {
sources += [
+ "ftrace_utils.cc",
"importers/fuchsia/fuchsia_provider_view.cc",
"importers/fuchsia/fuchsia_trace_parser.cc",
"importers/fuchsia/fuchsia_trace_parser.h",
@@ -209,19 +187,22 @@
"importers/fuchsia/fuchsia_trace_utils.h",
]
}
- if (enable_perfetto_trace_processor_syscalls) {
- sources += [
- "syscall_tracker.cc",
- "syscalls_aarch32.h",
- "syscalls_aarch64.h",
- "syscalls_armeabi.h",
- "syscalls_x86_64.h",
- ]
- }
}
source_set("storage_full") {
sources = [
+ "importers/ftrace/binder_tracker.cc",
+ "importers/ftrace/binder_tracker.h",
+ "importers/ftrace/ftrace_descriptors.cc",
+ "importers/ftrace/ftrace_descriptors.h",
+ "importers/ftrace/ftrace_module_impl.cc",
+ "importers/ftrace/ftrace_module_impl.h",
+ "importers/ftrace/ftrace_parser.cc",
+ "importers/ftrace/ftrace_parser.h",
+ "importers/ftrace/ftrace_tokenizer.cc",
+ "importers/ftrace/ftrace_tokenizer.h",
+ "importers/ftrace/sched_event_tracker.cc",
+ "importers/ftrace/sched_event_tracker.h",
"importers/proto/android_probes_module.cc",
"importers/proto/android_probes_module.h",
"importers/proto/android_probes_parser.cc",
@@ -242,8 +223,17 @@
"importers/proto/system_probes_parser.h",
"importers/proto/vulkan_memory_tracker.cc",
"importers/proto/vulkan_memory_tracker.h",
+ "importers/systrace/systrace_parser.cc",
+ "importers/systrace/systrace_parser.h",
+ "importers/systrace/systrace_trace_parser.cc",
+ "importers/systrace/systrace_trace_parser.h",
"register_additional_modules.cc",
"register_additional_modules.h",
+ "syscall_tracker.cc",
+ "syscalls_aarch32.h",
+ "syscalls_aarch64.h",
+ "syscalls_armeabi.h",
+ "syscalls_x86_64.h",
]
public_deps = [
":storage_minimal",
@@ -263,16 +253,8 @@
# Include these sources only if they are not already included in
# storage_minimal.
- # TODO(khokhlov): Remove this 'if' when modules that use this tracker are
- # migrated to storage_full.
- if (!enable_perfetto_trace_processor_syscalls) {
- sources += [
- "syscall_tracker.cc",
- "syscalls_aarch32.h",
- "syscalls_aarch64.h",
- "syscalls_armeabi.h",
- "syscalls_x86_64.h",
- ]
+ if (!enable_perfetto_trace_processor_fuchsia) {
+ sources += [ "ftrace_utils.cc" ]
}
}
@@ -316,6 +298,7 @@
"read_trace.cc",
"row_iterators.cc",
"row_iterators.h",
+ "sched_slice_table.cc",
"sched_slice_table.h",
"span_join_operator_table.cc",
"span_join_operator_table.h",
@@ -355,9 +338,6 @@
public_deps = [
"../../include/perfetto/trace_processor",
]
- if (enable_perfetto_trace_processor_ftrace) {
- sources += [ "sched_slice_table.cc" ]
- }
if (enable_perfetto_trace_processor_metrics) {
deps += [
"../../protos/perfetto/metrics:zero",
@@ -405,6 +385,7 @@
"clock_tracker_unittest.cc",
"event_tracker_unittest.cc",
"forwarding_trace_parser_unittest.cc",
+ "ftrace_utils_unittest.cc",
"heap_profile_tracker_unittest.cc",
"importers/proto/args_table_utils_unittest.cc",
"importers/proto/heap_graph_walker_unittest.cc",
@@ -412,7 +393,10 @@
"importers/systrace/systrace_parser_unittest.cc",
"process_tracker_unittest.cc",
"protozero_to_text_unittests.cc",
+ "sched_slice_table_unittest.cc",
"slice_tracker_unittest.cc",
+ "syscall_tracker_unittest.cc",
+ "thread_table_unittest.cc",
"trace_sorter_unittest.cc",
]
deps = [
@@ -474,19 +458,9 @@
]
}
}
- if (enable_perfetto_trace_processor_ftrace) {
- sources += [
- "ftrace_utils_unittest.cc",
- "sched_slice_table_unittest.cc",
- "thread_table_unittest.cc",
- ]
- }
if (enable_perfetto_trace_processor_fuchsia) {
sources += [ "importers/fuchsia/fuchsia_trace_utils_unittest.cc" ]
}
- if (enable_perfetto_trace_processor_syscalls) {
- sources += [ "syscall_tracker_unittest.cc" ]
- }
}
source_set("integrationtests") {
diff --git a/src/trace_processor/event_tracker_unittest.cc b/src/trace_processor/event_tracker_unittest.cc
index 61968ab..4fadf41 100644
--- a/src/trace_processor/event_tracker_unittest.cc
+++ b/src/trace_processor/event_tracker_unittest.cc
@@ -39,9 +39,7 @@
context.process_tracker.reset(new ProcessTracker(&context));
context.event_tracker.reset(new EventTracker(&context));
context.track_tracker.reset(new TrackTracker(&context));
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
sched_tracker = SchedEventTracker::GetOrCreate(&context);
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
}
protected:
@@ -49,7 +47,6 @@
SchedEventTracker* sched_tracker;
};
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(EventTrackerTest, InsertSecondSched) {
uint32_t cpu = 3;
int64_t timestamp = 100;
@@ -111,7 +108,6 @@
ASSERT_EQ(context.storage->slices().utids().at(0),
context.storage->slices().utids().at(2));
}
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(EventTrackerTest, CounterDuration) {
uint32_t cpu = 3;
diff --git a/src/trace_processor/forwarding_trace_parser.cc b/src/trace_processor/forwarding_trace_parser.cc
index 81de5d1..b28b89b 100644
--- a/src/trace_processor/forwarding_trace_parser.cc
+++ b/src/trace_processor/forwarding_trace_parser.cc
@@ -21,7 +21,6 @@
#include "src/trace_processor/gzip_trace_parser.h"
#include "src/trace_processor/importers/proto/proto_trace_parser.h"
#include "src/trace_processor/importers/proto/proto_trace_tokenizer.h"
-#include "src/trace_processor/importers/systrace/systrace_trace_parser.h"
#include "src/trace_processor/trace_sorter.h"
#if PERFETTO_BUILDFLAG(PERFETTO_TP_FUCHSIA)
@@ -108,12 +107,12 @@
}
case kSystraceTraceType:
PERFETTO_DLOG("Systrace trace detected");
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
- reader_.reset(new SystraceTraceParser(context_));
- break;
-#else // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
- return util::ErrStatus("Systrace support is disabled");
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
+ if (context_->systrace_trace_parser) {
+ reader_ = std::move(context_->systrace_trace_parser);
+ break;
+ } else {
+ return util::ErrStatus("Systrace support is disabled");
+ }
case kGzipTraceType:
PERFETTO_DLOG("gzip trace detected");
reader_.reset(new GzipTraceParser(context_));
diff --git a/src/trace_processor/importers/ftrace/ftrace_module.h b/src/trace_processor/importers/ftrace/ftrace_module.h
index 5f43490..8d2382c 100644
--- a/src/trace_processor/importers/ftrace/ftrace_module.h
+++ b/src/trace_processor/importers/ftrace/ftrace_module.h
@@ -17,14 +17,8 @@
#ifndef SRC_TRACE_PROCESSOR_IMPORTERS_FTRACE_FTRACE_MODULE_H_
#define SRC_TRACE_PROCESSOR_IMPORTERS_FTRACE_FTRACE_MODULE_H_
-#include "perfetto/base/build_config.h"
-#include "src/trace_processor/importers/ftrace/ftrace_parser.h"
-#include "src/trace_processor/importers/ftrace/ftrace_tokenizer.h"
#include "src/trace_processor/importers/proto/proto_importer_module.h"
#include "src/trace_processor/timestamped_trace_piece.h"
-#include "src/trace_processor/trace_blob_view.h"
-
-#include "protos/perfetto/trace/trace_packet.pbzero.h"
namespace perfetto {
namespace trace_processor {
@@ -35,29 +29,6 @@
const TimestampedTracePiece& ttp);
};
-class FtraceModuleImpl : public FtraceModule {
- public:
- FtraceModuleImpl(TraceProcessorContext* context);
-
- ModuleResult TokenizePacket(
- const protos::pbzero::TracePacket::Decoder& decoder,
- TraceBlobView* packet,
- int64_t packet_timestamp,
- PacketSequenceState* state,
- uint32_t field_id) override;
-
- void ParsePacket(const protos::pbzero::TracePacket::Decoder& decoder,
- const TimestampedTracePiece&,
- uint32_t field_id) override;
-
- void ParseFtracePacket(uint32_t cpu,
- const TimestampedTracePiece& ttp) override;
-
- private:
- FtraceTokenizer tokenizer_;
- FtraceParser parser_;
-};
-
} // namespace trace_processor
} // namespace perfetto
diff --git a/src/trace_processor/importers/ftrace/ftrace_module_impl.cc b/src/trace_processor/importers/ftrace/ftrace_module_impl.cc
index 2347196..63f926b 100644
--- a/src/trace_processor/importers/ftrace/ftrace_module_impl.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_module_impl.cc
@@ -14,8 +14,8 @@
* limitations under the License.
*/
+#include "src/trace_processor/importers/ftrace/ftrace_module_impl.h"
#include "perfetto/base/build_config.h"
-#include "src/trace_processor/importers/ftrace/ftrace_module.h"
#include "src/trace_processor/importers/ftrace/ftrace_parser.h"
#include "src/trace_processor/importers/ftrace/ftrace_tokenizer.h"
#include "src/trace_processor/timestamped_trace_piece.h"
diff --git a/src/trace_processor/importers/ftrace/ftrace_module_impl.h b/src/trace_processor/importers/ftrace/ftrace_module_impl.h
new file mode 100644
index 0000000..66f5fe4
--- /dev/null
+++ b/src/trace_processor/importers/ftrace/ftrace_module_impl.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SRC_TRACE_PROCESSOR_IMPORTERS_FTRACE_FTRACE_MODULE_IMPL_H_
+#define SRC_TRACE_PROCESSOR_IMPORTERS_FTRACE_FTRACE_MODULE_IMPL_H_
+
+#include "perfetto/base/build_config.h"
+#include "src/trace_processor/importers/ftrace/ftrace_module.h"
+#include "src/trace_processor/importers/ftrace/ftrace_parser.h"
+#include "src/trace_processor/importers/ftrace/ftrace_tokenizer.h"
+#include "src/trace_processor/importers/proto/proto_importer_module.h"
+#include "src/trace_processor/timestamped_trace_piece.h"
+#include "src/trace_processor/trace_blob_view.h"
+
+#include "protos/perfetto/trace/trace_packet.pbzero.h"
+
+namespace perfetto {
+namespace trace_processor {
+
+class FtraceModuleImpl : public FtraceModule {
+ public:
+ FtraceModuleImpl(TraceProcessorContext* context);
+
+ ModuleResult TokenizePacket(
+ const protos::pbzero::TracePacket::Decoder& decoder,
+ TraceBlobView* packet,
+ int64_t packet_timestamp,
+ PacketSequenceState* state,
+ uint32_t field_id) override;
+
+ void ParsePacket(const protos::pbzero::TracePacket::Decoder& decoder,
+ const TimestampedTracePiece&,
+ uint32_t field_id) override;
+
+ void ParseFtracePacket(uint32_t cpu,
+ const TimestampedTracePiece& ttp) override;
+
+ private:
+ FtraceTokenizer tokenizer_;
+ FtraceParser parser_;
+};
+
+} // namespace trace_processor
+} // namespace perfetto
+
+#endif // SRC_TRACE_PROCESSOR_IMPORTERS_FTRACE_FTRACE_MODULE_IMPL_H_
diff --git a/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc b/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc
index 6939a37..7a3f41b 100644
--- a/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc
+++ b/src/trace_processor/importers/proto/proto_trace_parser_unittest.cc
@@ -92,7 +92,6 @@
}
} // namespace
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
class MockSchedEventTracker : public SchedEventTracker {
public:
MockSchedEventTracker(TraceProcessorContext* context)
@@ -109,7 +108,6 @@
base::StringView next_comm,
int32_t next_prio));
};
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
class MockEventTracker : public EventTracker {
public:
@@ -229,10 +227,8 @@
context_.args_tracker.reset(new ArgsTracker(&context_));
event_ = new MockEventTracker(&context_);
context_.event_tracker.reset(event_);
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
sched_ = new MockSchedEventTracker(&context_);
context_.sched_tracker.reset(sched_);
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
process_ = new MockProcessTracker(&context_);
context_.process_tracker.reset(process_);
slice_ = new MockSliceTracker(&context_);
@@ -241,14 +237,6 @@
context_.clock_tracker.reset(clock_);
context_.sorter.reset(new TraceSorter(&context_, 0 /*window size*/));
context_.parser.reset(new ProtoTraceParser(&context_));
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
- context_.modules.emplace_back(new FtraceModuleImpl(&context_));
-#else
- context_.modules.emplace_back(new FtraceModule());
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
- context_.ftrace_module =
- static_cast<FtraceModule*>(context_.modules.back().get());
-
context_.modules.emplace_back(new TrackEventModule(&context_));
RegisterAdditionalModules(&context_);
@@ -301,9 +289,7 @@
protos::pbzero::Trace trace_;
TraceProcessorContext context_;
MockEventTracker* event_;
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
MockSchedEventTracker* sched_;
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
MockProcessTracker* process_;
MockSliceTracker* slice_;
ClockTracker* clock_;
@@ -311,7 +297,6 @@
};
// TODO(eseckler): Refactor these into a new file for ftrace tests.
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(ProtoTraceParserTest, LoadSingleEvent) {
auto* bundle = trace_.add_packet()->set_ftrace_events();
@@ -587,8 +572,6 @@
EXPECT_EQ(context_.storage->cpu_counter_track_table().cpu()[0], 10u);
}
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
-
TEST_F(ProtoTraceParserTest, LoadMemInfo) {
auto* packet = trace_.add_packet();
uint64_t ts = 1000;
diff --git a/src/trace_processor/process_tracker_unittest.cc b/src/trace_processor/process_tracker_unittest.cc
index 1122a99..802ba42 100644
--- a/src/trace_processor/process_tracker_unittest.cc
+++ b/src/trace_processor/process_tracker_unittest.cc
@@ -86,7 +86,6 @@
"test");
}
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(ProcessTrackerTest, UpdateThreadMatch) {
uint32_t cpu = 3;
int64_t timestamp = 100;
@@ -114,7 +113,6 @@
ASSERT_EQ(process.pid, 2u);
ASSERT_EQ(process.start_ns, 0);
}
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(ProcessTrackerTest, UpdateThreadCreate) {
context.process_tracker->UpdateThread(12, 2);
diff --git a/src/trace_processor/raw_table.cc b/src/trace_processor/raw_table.cc
index 2b049f8..f7f31e1 100644
--- a/src/trace_processor/raw_table.cc
+++ b/src/trace_processor/raw_table.cc
@@ -52,7 +52,6 @@
RawTable::RawTable(sqlite3* db, const TraceStorage* storage)
: storage_(storage) {
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
auto fn = [](sqlite3_context* ctx, int argc, sqlite3_value** argv) {
auto* thiz = static_cast<RawTable*>(sqlite3_user_data(ctx));
thiz->ToSystrace(ctx, argc, argv);
@@ -60,9 +59,6 @@
sqlite3_create_function(db, "to_ftrace", 1,
SQLITE_UTF8 | SQLITE_DETERMINISTIC, this, fn, nullptr,
nullptr);
-#else // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
- base::ignore_result(db);
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
}
void RawTable::RegisterTable(sqlite3* db, const TraceStorage* storage) {
@@ -99,7 +95,6 @@
return SQLITE_OK;
}
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
bool RawTable::ParseGfpFlags(Variadic value, base::StringWriter* writer) {
if (!storage_->metadata().MetadataExists(metadata::KeyIDs::system_name) ||
!storage_->metadata().MetadataExists(metadata::KeyIDs::system_release)) {
@@ -415,7 +410,6 @@
FormatSystraceArgs(event_name, raw_evts.arg_set_ids()[row], &writer);
sqlite3_result_text(ctx, writer.CreateStringCopy(), -1, free);
}
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
} // namespace trace_processor
} // namespace perfetto
diff --git a/src/trace_processor/raw_table.h b/src/trace_processor/raw_table.h
index 480188c..e4506b4 100644
--- a/src/trace_processor/raw_table.h
+++ b/src/trace_processor/raw_table.h
@@ -36,13 +36,11 @@
int BestIndex(const QueryConstraints&, BestIndexInfo*) override;
private:
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
void FormatSystraceArgs(NullTermStringView event_name,
ArgSetId arg_set_id,
base::StringWriter* writer);
void ToSystrace(sqlite3_context* ctx, int argc, sqlite3_value** argv);
bool ParseGfpFlags(Variadic value, base::StringWriter* writer);
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
const TraceStorage* const storage_;
};
diff --git a/src/trace_processor/register_additional_modules.cc b/src/trace_processor/register_additional_modules.cc
index bc9d6ef..ad14f74 100644
--- a/src/trace_processor/register_additional_modules.cc
+++ b/src/trace_processor/register_additional_modules.cc
@@ -15,10 +15,12 @@
*/
#include "src/trace_processor/register_additional_modules.h"
+#include "src/trace_processor/importers/ftrace/ftrace_module_impl.h"
#include "src/trace_processor/importers/proto/android_probes_module.h"
#include "src/trace_processor/importers/proto/graphics_event_module.h"
#include "src/trace_processor/importers/proto/heap_graph_module.h"
#include "src/trace_processor/importers/proto/system_probes_module.h"
+#include "src/trace_processor/importers/systrace/systrace_trace_parser.h"
namespace perfetto {
namespace trace_processor {
@@ -28,6 +30,13 @@
context->modules.emplace_back(new GraphicsEventModule(context));
context->modules.emplace_back(new HeapGraphModule(context));
context->modules.emplace_back(new SystemProbesModule(context));
+ context->modules.emplace_back(new FtraceModuleImpl(context));
+ // Ftrace module is special, because it has one extra method for parsing
+ // ftrace packets. So we need to store a pointer to it separately.
+ context->ftrace_module =
+ static_cast<FtraceModule*>(context->modules.back().get());
+
+ context->systrace_trace_parser.reset(new SystraceTraceParser(context));
}
} // namespace trace_processor
diff --git a/src/trace_processor/storage_minimal_smoke_test.cc b/src/trace_processor/storage_minimal_smoke_test.cc
index 1aa037d..dcf8aba 100644
--- a/src/trace_processor/storage_minimal_smoke_test.cc
+++ b/src/trace_processor/storage_minimal_smoke_test.cc
@@ -53,11 +53,12 @@
auto f = fopen(base::GetTestDataPath("test/data/gpu_trace.pb").c_str(), "rb");
std::unique_ptr<uint8_t[]> buf(new uint8_t[MAX_SIZE]);
auto rsize = fread(reinterpret_cast<char*>(buf.get()), 1, MAX_SIZE, f);
- storage_->Parse(std::move(buf), rsize);
+ util::Status status = storage_->Parse(std::move(buf), rsize);
+ ASSERT_TRUE(status.ok());
storage_->NotifyEndOfFile();
JsonStringOutputWriter output_writer;
- auto status = json::ExportJson(storage_.get(), &output_writer);
+ json::ExportJson(storage_.get(), &output_writer);
Json::Reader reader;
Json::Value result;
reader.parse(output_writer.buffer, result);
@@ -65,16 +66,28 @@
ASSERT_EQ(result["traceEvents"].size(), 0u);
}
+TEST_F(StorageMinimalSmokeTest, SystraceReturnsError) {
+ const size_t MAX_SIZE = 1 << 20;
+ auto f =
+ fopen(base::GetTestDataPath("test/data/systrace.html").c_str(), "rb");
+ std::unique_ptr<uint8_t[]> buf(new uint8_t[MAX_SIZE]);
+ auto rsize = fread(reinterpret_cast<char*>(buf.get()), 1, MAX_SIZE, f);
+ util::Status status = storage_->Parse(std::move(buf), rsize);
+
+ ASSERT_FALSE(status.ok());
+}
+
TEST_F(StorageMinimalSmokeTest, TrackEventsImported) {
const size_t MAX_SIZE = 1 << 20;
auto f = fopen("test/trace_processor/track_event_typed_args.pb", "rb");
std::unique_ptr<uint8_t[]> buf(new uint8_t[MAX_SIZE]);
auto rsize = fread(reinterpret_cast<char*>(buf.get()), 1, MAX_SIZE, f);
- storage_->Parse(std::move(buf), rsize);
+ util::Status status = storage_->Parse(std::move(buf), rsize);
+ ASSERT_TRUE(status.ok());
storage_->NotifyEndOfFile();
JsonStringOutputWriter output_writer;
- auto status = json::ExportJson(storage_.get(), &output_writer);
+ json::ExportJson(storage_.get(), &output_writer);
Json::Reader reader;
Json::Value result;
reader.parse(output_writer.buffer, result);
diff --git a/src/trace_processor/trace_database_integrationtest.cc b/src/trace_processor/trace_database_integrationtest.cc
index 5fc550f..a6ef050 100644
--- a/src/trace_processor/trace_database_integrationtest.cc
+++ b/src/trace_processor/trace_database_integrationtest.cc
@@ -66,7 +66,6 @@
std::unique_ptr<TraceProcessor> processor_;
};
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(TraceProcessorIntegrationTest, AndroidSchedAndPs) {
ASSERT_TRUE(LoadTrace("android_sched_and_ps.pb").ok());
auto it = Query(
@@ -79,9 +78,7 @@
ASSERT_EQ(it.Get(1).long_value, 19684308497);
ASSERT_FALSE(it.Next());
}
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(TraceProcessorIntegrationTest, TraceBounds) {
ASSERT_TRUE(LoadTrace("android_sched_and_ps.pb").ok());
auto it = Query("select start_ts, end_ts from trace_bounds");
@@ -92,7 +89,6 @@
ASSERT_EQ(it.Get(1).long_value, 81492700784311);
ASSERT_FALSE(it.Next());
}
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
TEST_F(TraceProcessorIntegrationTest, Hash) {
auto it = Query("select HASH()");
diff --git a/src/trace_processor/trace_processor_context.h b/src/trace_processor/trace_processor_context.h
index 6d5b75c..2fd3c15 100644
--- a/src/trace_processor/trace_processor_context.h
+++ b/src/trace_processor/trace_processor_context.h
@@ -21,6 +21,7 @@
#include <vector>
#include "perfetto/trace_processor/basic_types.h"
+#include "src/trace_processor/chunked_trace_reader.h"
#include "src/trace_processor/destructible.h"
#include "src/trace_processor/importers/proto/proto_importer_module.h"
@@ -69,11 +70,17 @@
std::unique_ptr<Destructible> sched_tracker; // SchedEventTracker
std::unique_ptr<Destructible> systrace_parser; // SystraceParser
+ // This will be nullptr in the minimal build (storage_minimal target), and
+ // a pointer to the instance of SystraceTraceParser class in the full build
+ // (storage_full target). The corresponding initialization happens in
+ // register_additional_modules.cc.
+ std::unique_ptr<ChunkedTraceReader> systrace_trace_parser;
+
// The module at the index N is registered to handle field id N in
// TracePacket.
std::vector<ProtoImporterModule*> modules_by_field;
std::vector<std::unique_ptr<ProtoImporterModule>> modules;
- FtraceModule* ftrace_module;
+ FtraceModule* ftrace_module = nullptr;
};
} // namespace trace_processor
diff --git a/src/trace_processor/trace_processor_impl.cc b/src/trace_processor/trace_processor_impl.cc
index b220ac2..f538e73 100644
--- a/src/trace_processor/trace_processor_impl.cc
+++ b/src/trace_processor/trace_processor_impl.cc
@@ -25,6 +25,7 @@
#include "perfetto/ext/base/string_utils.h"
#include "src/trace_processor/android_logs_table.h"
#include "src/trace_processor/args_table.h"
+#include "src/trace_processor/importers/ftrace/sched_event_tracker.h"
#include "src/trace_processor/instants_table.h"
#include "src/trace_processor/metadata_table.h"
#include "src/trace_processor/process_table.h"
@@ -369,9 +370,7 @@
ArgsTable::RegisterTable(*db_, context_.storage.get());
ProcessTable::RegisterTable(*db_, context_.storage.get());
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
SchedSliceTable::RegisterTable(*db_, context_.storage.get());
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
SqlStatsTable::RegisterTable(*db_, context_.storage.get());
ThreadTable::RegisterTable(*db_, context_.storage.get());
SpanJoinOperatorTable::RegisterTable(*db_, context_.storage.get());
@@ -473,6 +472,7 @@
TraceProcessorStorageImpl::NotifyEndOfFile();
+ SchedEventTracker::GetOrCreate(&context_)->FlushPendingEvents();
BuildBoundsTable(*db_, context_.storage->GetTraceTimestampBoundsNs());
// Create a snapshot of all tables and views created so far. This is so later
diff --git a/src/trace_processor/trace_processor_storage_impl.cc b/src/trace_processor/trace_processor_storage_impl.cc
index 46aefbf..9e0726d 100644
--- a/src/trace_processor/trace_processor_storage_impl.cc
+++ b/src/trace_processor/trace_processor_storage_impl.cc
@@ -26,7 +26,6 @@
#include "src/trace_processor/importers/proto/proto_importer_module.h"
#include "src/trace_processor/importers/proto/proto_trace_tokenizer.h"
#include "src/trace_processor/importers/proto/track_event_module.h"
-#include "src/trace_processor/importers/systrace/systrace_trace_parser.h"
#include "src/trace_processor/process_tracker.h"
#include "src/trace_processor/slice_tracker.h"
#include "src/trace_processor/stack_profile_tracker.h"
@@ -48,11 +47,7 @@
context_.clock_tracker.reset(new ClockTracker(&context_));
context_.heap_profile_tracker.reset(new HeapProfileTracker(&context_));
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
- context_.modules.emplace_back(new FtraceModuleImpl(&context_));
-#else
context_.modules.emplace_back(new FtraceModule());
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
// Ftrace module is special, because it has one extra method for parsing
// ftrace packets. So we need to store a pointer to it separately.
context_.ftrace_module =
@@ -86,9 +81,6 @@
if (context_.sorter)
context_.sorter->ExtractEventsForced();
-#if PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
- SchedEventTracker::GetOrCreate(&context_)->FlushPendingEvents();
-#endif // PERFETTO_BUILDFLAG(PERFETTO_TP_FTRACE)
context_.event_tracker->FlushPendingEvents();
context_.slice_tracker->FlushPendingSlices();
}