OSDN Git Service

Fix thread booster
authorJorim Jaggi <jjaggi@google.com>
Fri, 9 Jun 2017 19:00:58 +0000 (12:00 -0700)
committerJorim Jaggi <jjaggi@google.com>
Fri, 9 Jun 2017 19:19:18 +0000 (12:19 -0700)
We need to conditionally set the prevPriority only if we enter
the first locked section. Otherwise we'll never reset back to the
lower priorities.

Test: Make sure no binder threads are stuck at 110.
Test: go/wm-smoke
Bug: 36631902
Change-Id: I8a9c329bc3084371022da91eabee45943c1b8c9f

services/core/java/com/android/server/ThreadPriorityBooster.java

index 0dfecc0..cc9ac0d 100644 (file)
@@ -43,9 +43,11 @@ public class ThreadPriorityBooster {
         final int tid = myTid();
         final int prevPriority = getThreadPriority(tid);
         final PriorityState state = mThreadState.get();
-        state.prevPriority = prevPriority;
-        if (state.regionCounter == 0 && prevPriority > mBoostToPriority) {
-            setThreadPriority(tid, mBoostToPriority);
+        if (state.regionCounter == 0) {
+            state.prevPriority = prevPriority;
+            if (prevPriority > mBoostToPriority) {
+                setThreadPriority(tid, mBoostToPriority);
+            }
         }
         state.regionCounter++;
         if (LockGuard.ENABLED) {