Add data source to poll IHealth (battery counters) service

This CL adds a new "power" data source to poll battery
counters (AKA Coulomb counters) from the perfetto
traced_probes service. Doing so requires making HWBinder
transactions on the Android IHealth service. This has two
drawbacks: (1) the IHealth svc and hwbinder are internal
only and not part of the NDK; (2) using hwbinder requires
pulling 6 .so(s), which adds 150 KB of private dirty memory
due to linker relocations.

Both aspects are solved as follows:
1) libperfetto_android_internal.so is loaded/unloaded
   dynamically to access the the hwbinder, loading
   recursively libhwbinder.so etc.
3) In standalone builds, libperfetto_android_internal.so
   will not be found and the power data source will
   gracefully fail.

This CL depends on SELinux CL aosp/838610.

Bug: 113076327
Change-Id: Ice56c79bb1c8eec051f6c5d0afec01570a76a0a4
28 files changed
tree: 0ceffa033daffe5823acd2d64a031f4ba0deef9a
  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.