Support shmem-less ABI for the producer port

This CL introduces an "emulation mode" for the shared memory ABI for
sending trace data from producers to the service without cross-process
shared memory:

1. When the producer IPC client sees a non-unix socket name like TCP or
vsock, it enables the "emulation" mode for the socket ABI to serialize
chunk content (header and payload) into the CommitDataRequest proto
message. Then the chunk is released as free on the producer side.

2. When the service sees serialized data from the CommitDataRequest, it
constructs the chunk by adopting the serialized chunk in the proto
message. The chunk is discarded instead of being released to the shared
memory buffer.

Bug: 284258446
Change-Id: I65f96b4f00553c75b5f8af8c955427c681d10476
32 files changed
tree: 2ab17f706cb2e389da427256cc4ed0c3e1b6587e
  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. third_party/
  16. tools/
  17. ui/
  18. .clang-format
  19. .clang-tidy
  20. .git-blame-ignore-revs
  21. .gitattributes
  22. .gitignore
  23. .gn
  24. .style.yapf
  25. Android.bp
  26. Android.bp.extras
  27. BUILD
  28. BUILD.extras
  29. BUILD.gn
  30. CHANGELOG
  31. codereview.settings
  32. DIR_METADATA
  33. heapprofd.rc
  34. LICENSE
  35. meson.build
  36. METADATA
  37. MODULE_LICENSE_APACHE2
  38. OWNERS
  39. perfetto.rc
  40. PerfettoIntegrationTests.xml
  41. PRESUBMIT.py
  42. README.chromium
  43. README.md
  44. TEST_MAPPING
  45. traced_perf.rc
  46. 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.