summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Varun Shah <varunshah@google.com> 2021-01-21 16:05:00 -0800
committer Varun Shah <varunshah@google.com> 2021-01-22 00:34:24 +0000
commit46edabde790e82411d08239a3f6bf77ac6eabf70 (patch)
treeb5e1c243bd8c50b61ae56a9bd39f83225e5c79a5
parenta648085407a8a975f784d45d0b7fd9ca68c11bf7 (diff)
Don't hold AMS lock while calling into USS.
Bug: 177610601 Test: atest android.app.usage.UsageStatsTest Test: atest android.app.usage.cts.UsageStatsTest Test: atest UsageStatsDatabaseTest Change-Id: I0c95e48db2ffc44a12c7000ccd15fd5cfa00ff08
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java39
-rw-r--r--services/core/java/com/android/server/am/UserController.java8
2 files changed, 17 insertions, 30 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index aada21dfcc1e..402a8dee0fa5 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -2533,11 +2533,8 @@ public class ActivityManagerService extends IActivityManager.Stub
Slog.d(TAG_SWITCH, "updateActivityUsageStats: comp="
+ activity + " hash=" + appToken.hashCode() + " event=" + event);
}
- synchronized (this) {
- if (mUsageStatsService != null) {
- mUsageStatsService.reportEvent(activity, userId, event, appToken.hashCode(),
- taskRoot);
- }
+ if (mUsageStatsService != null) {
+ mUsageStatsService.reportEvent(activity, userId, event, appToken.hashCode(), taskRoot);
}
if (mContentCaptureService != null && (event == Event.ACTIVITY_PAUSED
|| event == Event.ACTIVITY_RESUMED || event == Event.ACTIVITY_STOPPED
@@ -2557,10 +2554,8 @@ public class ActivityManagerService extends IActivityManager.Stub
Slog.d(TAG_SWITCH, "updateActivityUsageStats: package="
+ packageName + " event=" + event);
}
- synchronized (this) {
- if (mUsageStatsService != null) {
- mUsageStatsService.reportEvent(packageName, userId, event);
- }
+ if (mUsageStatsService != null) {
+ mUsageStatsService.reportEvent(packageName, userId, event);
}
}
@@ -2575,12 +2570,10 @@ public class ActivityManagerService extends IActivityManager.Stub
Slog.d(TAG_SWITCH, "updateForegroundServiceUsageStats: comp="
+ service + " started=" + started);
}
- synchronized (this) {
- if (mUsageStatsService != null) {
- mUsageStatsService.reportEvent(service, userId,
- started ? UsageEvents.Event.FOREGROUND_SERVICE_START
- : UsageEvents.Event.FOREGROUND_SERVICE_STOP, 0, null);
- }
+ if (mUsageStatsService != null) {
+ mUsageStatsService.reportEvent(service, userId,
+ started ? UsageEvents.Event.FOREGROUND_SERVICE_START
+ : UsageEvents.Event.FOREGROUND_SERVICE_STOP, 0, null);
}
}
@@ -6098,7 +6091,7 @@ public class ActivityManagerService extends IActivityManager.Stub
return pfd;
}
- void reportGlobalUsageEventLocked(int event) {
+ void reportGlobalUsageEvent(int event) {
final int currentUserId = mUserController.getCurrentUserId();
mUsageStatsService.reportEvent(Event.DEVICE_EVENT_PACKAGE_NAME, currentUserId, event);
int[] profiles = mUserController.getCurrentProfileIds();
@@ -6112,8 +6105,8 @@ public class ActivityManagerService extends IActivityManager.Stub
}
}
- void reportCurWakefulnessUsageEventLocked() {
- reportGlobalUsageEventLocked(mWakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE
+ void reportCurWakefulnessUsageEvent() {
+ reportGlobalUsageEvent(mWakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE
? UsageEvents.Event.SCREEN_INTERACTIVE
: UsageEvents.Event.SCREEN_NON_INTERACTIVE);
}
@@ -6127,7 +6120,7 @@ public class ActivityManagerService extends IActivityManager.Stub
if (wasAwake != isAwake) {
// Also update state in a special way for running foreground services UI.
mServices.updateScreenStateLocked(isAwake);
- reportCurWakefulnessUsageEventLocked();
+ reportCurWakefulnessUsageEvent();
mActivityTaskManager.onScreenAwakeChanged(isAwake);
mOomAdjProfiler.onWakefulnessChanged(wakefulness);
}
@@ -16506,11 +16499,9 @@ public class ActivityManagerService extends IActivityManager.Stub
}
public void reportCurKeyguardUsageEvent(boolean keyguardShowing) {
- synchronized(ActivityManagerService.this) {
- ActivityManagerService.this.reportGlobalUsageEventLocked(keyguardShowing
- ? UsageEvents.Event.KEYGUARD_SHOWN
- : UsageEvents.Event.KEYGUARD_HIDDEN);
- }
+ ActivityManagerService.this.reportGlobalUsageEvent(keyguardShowing
+ ? UsageEvents.Event.KEYGUARD_SHOWN
+ : UsageEvents.Event.KEYGUARD_HIDDEN);
}
@Override
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 6d90eaafcf77..9556d804d53d 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -3042,15 +3042,11 @@ class UserController implements Handler.Callback {
}
void reportGlobalUsageEventLocked(int event) {
- synchronized (mService) {
- mService.reportGlobalUsageEventLocked(event);
- }
+ mService.reportGlobalUsageEvent(event);
}
void reportCurWakefulnessUsageEvent() {
- synchronized (mService) {
- mService.reportCurWakefulnessUsageEventLocked();
- }
+ mService.reportCurWakefulnessUsageEvent();
}
void taskSupervisorRemoveUser(@UserIdInt int userId) {