Shared library ABI for custom data sources

This commit implements an ABI and API for the shared library to support
registering custom data sources and creating tracing packets on them.

Most of the features of the C++ data sources are supported. Exceptions
are:
* Using custom thread local storage (not to be confused with custom
  per-instance thread local state, which is supported). The feature in
  C++ relies on heavily inlined template Traits. It is only used by the
  TrackEvent data source implementation, which in the shared library is
  going to has a separate ABI.

Bug: 237053857
Change-Id: I9fc49ea895facec8364f6ba2fd4b60e9fb287b4e
12 files changed
tree: 801977096daefe76179e335d8843ba001af04a5b
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. python/
  13. src/
  14. test/
  15. tools/
  16. ui/
  17. .clang-format
  18. .clang-tidy
  19. .git-blame-ignore-revs
  20. .gitattributes
  21. .gitignore
  22. .gn
  23. .style.yapf
  24. Android.bp
  25. Android.bp.extras
  26. BUILD
  27. BUILD.extras
  28. BUILD.gn
  29. CHANGELOG
  30. codereview.settings
  31. DIR_METADATA
  32. heapprofd.rc
  33. LICENSE
  34. meson.build
  35. METADATA
  36. MODULE_LICENSE_APACHE2
  37. OWNERS
  38. perfetto.rc
  39. PerfettoIntegrationTests.xml
  40. PRESUBMIT.py
  41. README.chromium
  42. README.md
  43. TEST_MAPPING
  44. traced_perf.rc
  45. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.