Add IPC layer + Platform implementation for Windows
The final CL that adds the Windows-specific IPC bits.
This implements the IPC transport as a AF_UNIX socket
and a named shared memory region. AF_UNIX doesn't
bring any major benefits really and I wonder whether
we should just use a TCP socket. In fact, AF_UNIX on
Windows misses the interesting bits of UNIX sockets:
(1) FD-passing is not supported; (2) Peer credentials
are not supported. Given that the shared memory is
based on an unguessable string, we could send that
over TCP as well.
Bug: 174454879
Test: manual on Windows, the following works:
perfetto_unittests.exe
perfetto_integrationtests.exe
traced.exe + perfetto.exe
stress_test.exe (there is something odd scheduling-wise here but
seems unrelated with the IPC port)
Change-Id: I77cb42940d8bd2ffbee2454ec8d6982781a3096b
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.