Shared library track event: API/ABI to emit data

This commit implements:
* New ABIs to emit events to the data source:
  * A low level ABI that allows users to do their own message
    serialization.
  * A high level ABI that accepts a representation of the data to be
    traced and performs serialization in the library.
* The PERFETTO_TE macro (similar to the TRACE_EVENT macro) that can be
  used to emit trace events using the high level ABI.

Bug: 237053982
Change-Id: I0ca1a9b03dfa67f7618e27e176f3113eddca871a
diff --git a/Android.bp b/Android.bp
index eb8d90a..1f072d6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -2046,6 +2046,7 @@
         ":perfetto_src_protozero_filtering_string_filter",
         ":perfetto_src_protozero_proto_ring_buffer",
         ":perfetto_src_protozero_protozero",
+        ":perfetto_src_shared_lib_intern_map",
         ":perfetto_src_shared_lib_shared_lib",
         ":perfetto_src_shared_lib_test_integrationtests",
         ":perfetto_src_shared_lib_test_utils",
@@ -9465,6 +9466,14 @@
     ],
 }
 
+// GN: //src/shared_lib:intern_map
+filegroup {
+    name: "perfetto_src_shared_lib_intern_map",
+    srcs: [
+        "src/shared_lib/intern_map.cc",
+    ],
+}
+
 // GN: //src/shared_lib:shared_lib
 filegroup {
     name: "perfetto_src_shared_lib_shared_lib",
@@ -9474,6 +9483,7 @@
         "src/shared_lib/pb_decoder.cc",
         "src/shared_lib/producer.cc",
         "src/shared_lib/stream_writer.cc",
+        "src/shared_lib/thread_utils.cc",
         "src/shared_lib/tracing_session.cc",
         "src/shared_lib/track_event.cc",
     ],
@@ -9495,6 +9505,14 @@
     ],
 }
 
+// GN: //src/shared_lib:unittests
+filegroup {
+    name: "perfetto_src_shared_lib_unittests",
+    srcs: [
+        "src/shared_lib/intern_map_unittest.cc",
+    ],
+}
+
 // GN: //src/trace_processor/containers:containers
 filegroup {
     name: "perfetto_src_trace_processor_containers_containers",
@@ -12096,8 +12114,11 @@
         ":perfetto_include_perfetto_profiling_pprof_builder",
         ":perfetto_include_perfetto_protozero_protozero",
         ":perfetto_include_perfetto_public_abi_base",
+        ":perfetto_include_perfetto_public_abi_public",
         ":perfetto_include_perfetto_public_base",
+        ":perfetto_include_perfetto_public_protos_protos",
         ":perfetto_include_perfetto_public_protozero",
+        ":perfetto_include_perfetto_public_public",
         ":perfetto_include_perfetto_test_test_support",
         ":perfetto_include_perfetto_trace_processor_basic_types",
         ":perfetto_include_perfetto_trace_processor_storage",
@@ -12277,6 +12298,8 @@
         ":perfetto_src_protozero_testing_messages_lite_gen",
         ":perfetto_src_protozero_testing_messages_zero_gen",
         ":perfetto_src_protozero_unittests",
+        ":perfetto_src_shared_lib_intern_map",
+        ":perfetto_src_shared_lib_unittests",
         ":perfetto_src_trace_processor_containers_containers",
         ":perfetto_src_trace_processor_containers_unittests",
         ":perfetto_src_trace_processor_db_db",