Add a HealthMonitor that detects hanging tasks.
Introduced watchdogs on SyncThread and RenderThread operations. For
more detail, see go/gfxstream-health-monitor
Test: Unit testing. Built and ran emulator
Bug: 232819676
Change-Id: I83db70d2d1efba999f0a4b92c4bc4b67b78ed70c
diff --git a/stream-servers/RenderThread.cpp b/stream-servers/RenderThread.cpp
index 32ca095..e262924 100644
--- a/stream-servers/RenderThread.cpp
+++ b/stream-servers/RenderThread.cpp
@@ -27,8 +27,10 @@
#include "RendererImpl.h"
#include "RingStream.h"
#include "apigen-codec-common/ChecksumCalculatorThreadInfo.h"
+#include "base/HealthMonitor.h"
#include "base/Lock.h"
#include "base/MessageChannel.h"
+#include "base/Metrics.h"
#include "base/StreamSerializing.h"
#include "base/System.h"
#include "base/Tracing.h"
@@ -47,6 +49,7 @@
#include <string.h>
using android::base::AutoLock;
+using android::base::EventHangMetadata;
using android::base::MessageChannel;
namespace emugl {
@@ -416,6 +419,10 @@
bool progress;
do {
+ HealthWatchdog watchdog(
+ FrameBuffer::getFB()->getHealthMonitor(),
+ WATCHDOG_DATA("RenderThread decode operation",
+ EventHangMetadata::HangType::kRenderThread, nullptr));
if (!seqnoPtr && tInfo.m_puid) {
seqnoPtr = FrameBuffer::getFB()->getProcessSequenceNumberPtr(tInfo.m_puid);