processor: Add foundations for modularization of proto trace parsing

Adds structual elements to support compile-time registration of
(optional) proto trace tokenizer/parser modules.

The trace processor will instantiate enabled modules for each
TraceProcessorContext via a wrapper template, which facilitates
disabling the module at compile time (avoiding the module's
construction and dropping any calls to it).

This also avoids virtual methods, so that calling any of the module's
methods is zero overhead - they can be inlined by the compiler at
callsites directly.

Bug: 141459049
Change-Id: Iae21c147144618dd48f8a3ab743aead257b4c0b5
14 files changed
tree: 48f94da5dfed717c439b1a279b3c404788c8a605
  1. bazel/
  2. build_overrides/
  3. buildtools/
  4. debian/
  5. docs/
  6. gn/
  7. include/
  8. infra/
  9. protos/
  10. src/
  11. test/
  12. tools/
  13. ui/
  14. .clang-format
  15. .gitignore
  16. .gn
  17. .style.yapf
  18. Android.bp
  19. Android.bp.extras
  20. BUILD
  21. BUILD.extras
  22. BUILD.gn
  23. codereview.settings
  24. heapprofd.rc
  25. MODULE_LICENSE_APACHE2
  26. NOTICE
  27. OWNERS
  28. perfetto.rc
  29. PRESUBMIT.py
  30. README.chromium
  31. README.md
  32. TEST_MAPPING
  33. WORKSPACE
README.md

Perfetto - Performance instrumentation and tracing

Perfetto is an open-source project for performance instrumentation and tracing of Linux/Android/Chrome platforms and user-space apps.

See www.perfetto.dev for docs.

Bugs

  • For bugs affecting Android or the tracing internals use the internal bug tracker (go/perfetto-bugs).
  • For bugs affecting Chrome use http://crbug.com, Component:Speed>Tracing label:Perfetto.

Community

You can reach us on our Discord channel. If you prefer using IRC we have an experimental Discord <> IRC bridge synced with #perfetto-dev on Freenode.