diff options
| author | 2023-01-07 09:11:36 +0000 | |
|---|---|---|
| committer | 2023-01-07 09:11:36 +0000 | |
| commit | d69ed7c6d4bcde2b010fb6ce63e1af58bc589b07 (patch) | |
| tree | cef9672418b15d266178495b0142015282d8859f | |
| parent | 8f0fc74948ac0b7304474d654b4c8642f35c6461 (diff) | |
| parent | 3e766c676baecea1ea95c3c31d3c92d0e7969cd1 (diff) | |
Merge "Reduce lock contention when starting process (2/N)"
4 files changed, 19 insertions, 22 deletions
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 80f13216d8c8..3a40fc7199f3 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -1723,7 +1723,7 @@ public final class ProcessList { } app.setMountMode(mountExternal); checkSlow(startUptime, "startProcess: building args"); - if (mService.mAtmInternal.isFactoryTestProcess(app.getWindowProcessController())) { + if (app.getWindowProcessController().isFactoryTestProcess()) { uid = 0; } int runtimeFlags = 0; diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java index ef126a97e7a4..c51808ac3432 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java @@ -437,8 +437,6 @@ public abstract class ActivityTaskManagerInternal { boolean allowInstrumenting, boolean fromHomeKey); /** Start home activities on all displays that support system decorations. */ public abstract boolean startHomeOnAllDisplays(int userId, String reason); - /** @return true if the given process is the factory test process. */ - public abstract boolean isFactoryTestProcess(WindowProcessController wpc); public abstract void updateTopComponentForFactoryTest(); public abstract void handleAppDied(WindowProcessController wpc, boolean restarting, Runnable finishInstrumentationCallback); diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 052c3d8d568f..70e7daeea89e 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -41,7 +41,6 @@ import static android.app.sdksandbox.SdkSandboxManager.ACTION_START_SANDBOXED_AC import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; -import static android.content.pm.ApplicationInfo.FLAG_FACTORY_TEST; import static android.content.pm.ConfigurationInfo.GL_ES_VERSION_UNDEFINED; import static android.content.pm.PackageManager.FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS; import static android.content.pm.PackageManager.FEATURE_CANT_SAVE_STATE; @@ -50,9 +49,7 @@ import static android.content.pm.PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEME import static android.content.pm.PackageManager.FEATURE_LEANBACK; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; -import static android.os.FactoryTest.FACTORY_TEST_HIGH_LEVEL; import static android.os.FactoryTest.FACTORY_TEST_LOW_LEVEL; -import static android.os.FactoryTest.FACTORY_TEST_OFF; import static android.os.InputConstants.DEFAULT_DISPATCHING_TIMEOUT_MILLIS; import static android.os.Process.FIRST_APPLICATION_UID; import static android.os.Process.SYSTEM_UID; @@ -6088,22 +6085,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } - @HotPath(caller = HotPath.PROCESS_CHANGE) - @Override - public boolean isFactoryTestProcess(WindowProcessController wpc) { - synchronized (mGlobalLockWithoutBoost) { - if (mFactoryTest == FACTORY_TEST_OFF) { - return false; - } - if (mFactoryTest == FACTORY_TEST_LOW_LEVEL && mTopComponent != null - && wpc.mName.equals(mTopComponent.getPackageName())) { - return true; - } - return mFactoryTest == FACTORY_TEST_HIGH_LEVEL - && (wpc.mInfo.flags & FLAG_FACTORY_TEST) != 0; - } - } - @Override public void updateTopComponentForFactoryTest() { synchronized (mGlobalLock) { diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java index 3e1dc7ee5cfd..9b361fe71425 100644 --- a/services/core/java/com/android/server/wm/WindowProcessController.java +++ b/services/core/java/com/android/server/wm/WindowProcessController.java @@ -54,6 +54,7 @@ import android.app.IApplicationThread; import android.app.ProfilerInfo; import android.app.servertransaction.ConfigurationChangeItem; import android.companion.virtual.VirtualDeviceManager; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; @@ -62,6 +63,7 @@ import android.content.pm.ServiceInfo; import android.content.res.Configuration; import android.os.Binder; import android.os.Build; +import android.os.FactoryTest; import android.os.IBinder; import android.os.LocaleList; import android.os.Message; @@ -1718,6 +1720,22 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio return this == mAtm.mHeavyWeightProcess; } + @HotPath(caller = HotPath.PROCESS_CHANGE) + public boolean isFactoryTestProcess() { + final int factoryTestMode = mAtm.mFactoryTest; + if (factoryTestMode == FactoryTest.FACTORY_TEST_OFF) { + return false; + } + if (factoryTestMode == FactoryTest.FACTORY_TEST_LOW_LEVEL) { + final ComponentName topComponent = mAtm.mTopComponent; + if (topComponent != null && mName.equals(topComponent.getPackageName())) { + return true; + } + } + return factoryTestMode == FactoryTest.FACTORY_TEST_HIGH_LEVEL + && (mInfo.flags & ApplicationInfo.FLAG_FACTORY_TEST) != 0; + } + void setRunningRecentsAnimation(boolean running) { if (mRunningRecentsAnimation == running) { return; |