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/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
index af70070..31941ed 100644
--- a/gn/standalone/BUILD.gn
+++ b/gn/standalone/BUILD.gn
@@ -161,6 +161,8 @@
cflags += [
"/bigobj", # Some of our files are bigger than the regular limits.
"/Gy", # Enable function-level linking.
+ "/FS", # Preserve previous PDB behavior.
+ "/utf-8", # Assume UTF-8 by default to avoid code page dependencies.
]
defines += [
"_CRT_NONSTDC_NO_WARNINGS",