Implement ProtoLog service

This service is used to:
- Handle ProtoLog commands and forward the relevant commands to client
  processes.
- Handle ProtoLog viewer config dumping to the Perfetto trace. Since
  many client processes might be running the same code with the same
  viewer config we want to centralize this to ensure we only dump these
  configurations once and not once for every single processes. This also
  allows us to dump the viewer config on the Perfetto trace flush which
  is not guaranteed in all client processes which may be frozen until
  system server.

Each process tracing to ProtoLog will register itself with this service
to be managed appropriately. Each process will still be reponsible for
doing their own tracing directly to the Perfetto shared memory buffer.

Test: atest com.android.internal.protolog.ProtoLogServiceTest
Flag: android.tracing.client_side_proto_logging
Bug: 352538294
Change-Id: Ic2a44f813ebcb2039109d9e7c4d2f77e33172ed8
3 files changed