Add ability to trace only select syscalls.

On android, the raw_syscalls tracepoints are used to trace syscalls.
These however include *all* syscalls, though most users are probably
only interested in a subset.

This change adds the ability to specify the set of syscall events you
want to track and ignore the rest. It works using ftrace filters and
uses proper muxing to handle multiple configs. If no filter is provided,
the behavior is the exact same as it was before.

When muxing, the union of all necessary syscalls will be enabled. Since
the individual probers don't filter, this means that concurrent traces
can give more syscalls than you requested, but never less.

Test: ran perfetto_unittests
Change-Id: I1478cbd28625f3b4c5c2d050df8b6fed72db993c
15 files changed
tree: 5e8861aecb49a1dea82a4bc1de82968b39a37673
  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. .gitattributes
  20. .gitignore
  21. .gn
  22. .style.yapf
  23. Android.bp
  24. Android.bp.extras
  25. BUILD
  26. BUILD.extras
  27. BUILD.gn
  28. CHANGELOG
  29. codereview.settings
  30. DIR_METADATA
  31. heapprofd.rc
  32. LICENSE
  33. meson.build
  34. METADATA
  35. MODULE_LICENSE_APACHE2
  36. OWNERS
  37. perfetto.rc
  38. PerfettoIntegrationTests.xml
  39. PRESUBMIT.py
  40. README.chromium
  41. README.md
  42. TEST_MAPPING
  43. traced_perf.rc
  44. 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.