base: add ability to override platform-level functionality in base

In Google3, we need the ability to annotate the regions around blocking
syscalls so the userspace scheduler is aware of them. Because of this,
add functionality to mark such regions by having an abstraction of a
"platform" at a build system level and allow Bazel to override it.

Moreover, annotate read, write and poll syscalls in base with these
new functions: the "default" functions are empty noops.

Change-Id: I18c8246d32bac512494c2bc2cd5b02d840b82ec6
diff --git a/Android.bp b/Android.bp
index 2cea732..b5660da 100644
--- a/Android.bp
+++ b/Android.bp
@@ -18,6 +18,7 @@
 cc_binary {
     name: "heapprofd",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -200,6 +201,7 @@
 cc_library_shared {
     name: "heapprofd_client",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_public_abi_base",
@@ -232,6 +234,7 @@
 cc_library_shared {
     name: "heapprofd_client_api",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_public_abi_base",
@@ -280,6 +283,7 @@
 cc_library_shared {
     name: "heapprofd_standalone_client",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -455,6 +459,7 @@
 cc_binary_host {
     name: "ipc_plugin",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_public_abi_base",
@@ -478,6 +483,7 @@
 cc_library_shared {
     name: "libperfetto",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -704,6 +710,7 @@
 cc_library_static {
     name: "libperfetto_client_experimental",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -921,6 +928,7 @@
 cc_binary {
     name: "perfetto",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -1070,10 +1078,19 @@
     ],
 }
 
+// GN: //src/base:perfetto_base_default_platform
+filegroup {
+    name: "perfetto_base_default_platform",
+    srcs: [
+        "src/base/default_platform.cc",
+    ],
+}
+
 // GN: //test/cts:perfetto_cts_deps
 cc_library_static {
     name: "perfetto_cts_deps",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -1364,6 +1381,7 @@
 cc_library_static {
     name: "perfetto_cts_jni_deps",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -1800,6 +1818,7 @@
 cc_test {
     name: "perfetto_integrationtests",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -8784,6 +8803,7 @@
 cc_binary_host {
     name: "perfetto_src_protozero_protoc_plugin_cppgen_plugin",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_public_abi_base",
@@ -11258,6 +11278,7 @@
 cc_test {
     name: "perfetto_unittests",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_http_http",
@@ -11749,6 +11770,7 @@
 cc_library_static {
     name: "perfetto_vts_deps",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -12031,6 +12053,7 @@
 cc_binary_host {
     name: "protozero_plugin",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_public_abi_base",
@@ -12054,6 +12077,7 @@
 cc_binary {
     name: "trace_processor_shell",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_http_http",
@@ -12268,6 +12292,7 @@
 cc_binary_host {
     name: "traceconv",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -12468,6 +12493,7 @@
 cc_binary {
     name: "traced_perf",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",
@@ -12662,6 +12688,7 @@
 cc_binary {
     name: "trigger_perfetto",
     srcs: [
+        ":perfetto_base_default_platform",
         ":perfetto_include_perfetto_base_base",
         ":perfetto_include_perfetto_ext_base_base",
         ":perfetto_include_perfetto_ext_base_version",