Reland "Add IPC layer + Platform implementation for Windows"
Reland of aosp/1539396. Fixes WIN32 in platform_windows and
small things that broke since then.
Reason for revert (aosp/1608095): broke chromium win32
https://ci.chromium.org/p/chromium/builders/ci/win32-archive-rel/20608?
https://chromium-review.googlesource.com/c/chromium/src/+/2717017
Original CL description:
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.
#fixit
Bug: 174454879
Test: manual on Windows, the following works:
Change-Id: Iab7337e625338671873d5dffb169290fcbdd855e
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)
diff --git a/BUILD b/BUILD
index 3440cca..db8fd99 100644
--- a/BUILD
+++ b/BUILD
@@ -1681,6 +1681,8 @@
"src/tracing/ipc/memfd.h",
"src/tracing/ipc/posix_shared_memory.cc",
"src/tracing/ipc/posix_shared_memory.h",
+ "src/tracing/ipc/shared_memory_windows.cc",
+ "src/tracing/ipc/shared_memory_windows.h",
],
)
@@ -1735,6 +1737,7 @@
name = "src_tracing_platform_impl",
srcs = [
"src/tracing/platform_posix.cc",
+ "src/tracing/platform_windows.cc",
],
)