Add libperfetto_android_internal.so library to access HAL/VNDK

This CL introduces a new shared library, meant to be used
only in in-android-tree builds, to access Android internal
HAL services via hwbinder (and in future maybe other sw
binder interfaces).
The concrete use case is battery tracing (see CLs based
op top of this).
The reasons for splitting off a dedicated .so are twofold:
1) Keep non-NDK dependencies isolated in a standalone target
   and avoid polluting the codebase with #ifdefs.
2) Avoid the memory impact of pulling the various VNDK .so(s)
   unless necessary.

Using hwbinder requires pulling 6 (or more) .so(s), which adds
150 KB of private dirty memory at load time due to linker
relocations.
The plan is to dlopen() libperfetto_android_internal.so
only when required and unload it when unneeded.

Bug: 113076327
Change-Id: I55b76d3c6637fb3604afff6b27870418e4831aa1
8 files changed
tree: 1b66e525ffd7a8f23b544a0d8780d82466a65a37
  1. build_overrides/
  2. buildtools/
  3. debian/
  4. docs/
  5. gn/
  6. include/
  7. infra/
  8. protos/
  9. src/
  10. test/
  11. tools/
  12. ui/
  13. .clang-format
  14. .gitignore
  15. .gn
  16. .travis.yml
  17. Android.bp
  18. Android.bp.extras
  19. BUILD.gn
  20. codereview.settings
  21. heapprofd.rc
  22. MODULE_LICENSE_APACHE2
  23. NOTICE
  24. OWNERS
  25. perfetto.rc
  26. PRESUBMIT.py
  27. README.chromium
  28. README.md
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.