Adds rcSetProcessMetadata

... which is useful for attaching debug information to commands
from the guest.

Authored by natsu@, updated by willho@

Additions include attaching process name to render thread
monitors.

Bug: b/165022040, b/239845234
Test: Built and ran emulator
Change-Id: Icd28cdf9e88e50703c411a18719252e874bdc9b2
diff --git a/stream-servers/RenderThread.cpp b/stream-servers/RenderThread.cpp
index 8a00801..e59ed7e 100644
--- a/stream-servers/RenderThread.cpp
+++ b/stream-servers/RenderThread.cpp
@@ -48,6 +48,8 @@
 #include <assert.h>
 #include <string.h>
 
+#include <unordered_map>
+
 using android::base::AutoLock;
 using android::base::EventHangMetadata;
 using android::base::MessageChannel;
@@ -421,10 +423,16 @@
         bool progress;
 
         do {
-            HealthWatchdog watchdog(
-                FrameBuffer::getFB()->getHealthMonitor(),
-                WATCHDOG_DATA("RenderThread decode operation",
-                              EventHangMetadata::HangType::kRenderThread, nullptr));
+            std::unique_ptr<std::unordered_map<std::string, std::string>> renderThreadData =
+                std::make_unique<std::unordered_map<std::string, std::string>>();
+            if (tInfo.m_processName) {
+                renderThreadData->insert(
+                    {{"renderthread_guest_process", tInfo.m_processName.value()}});
+            }
+            HealthWatchdog watchdog(FrameBuffer::getFB()->getHealthMonitor(),
+                                    WATCHDOG_DATA("RenderThread decode operation",
+                                                  EventHangMetadata::HangType::kRenderThread,
+                                                  std::move(renderThreadData)));
 
             if (!seqnoPtr && tInfo.m_puid) {
                 seqnoPtr = FrameBuffer::getFB()->getProcessSequenceNumberPtr(tInfo.m_puid);