From 305bcbf0c961840c4505770d084a1caacc074dbb Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 3 Sep 2010 07:56:38 -0700 Subject: [PATCH] Decrease PackageManagerService wait time for vold Up the blocking queue maximum to twice the number of containers we allow which should let "asec list" complete without blocking the thread several times. Change the threads for the NativeDaemonConnector to vold and netd to be more descriptive instead of the same name. Bug: 2501075 Change-Id: I7e7949845a6c70a3d619aec0fa79ceef3c17a4be --- services/java/com/android/server/MountService.java | 12 ++++++++++-- .../android/server/NetworkManagementService.java | 6 ++++-- .../com/android/server/PackageManagerService.java | 13 +++++++------ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java index 344bfc1421a0f..6e8b42e8ca431 100644 --- a/services/java/com/android/server/MountService.java +++ b/services/java/com/android/server/MountService.java @@ -68,6 +68,8 @@ class MountService extends IMountService.Stub private static final String TAG = "MountService"; + private static final String VOLD_TAG = "VoldConnector"; + /* * Internal vold volume state constants */ @@ -993,9 +995,15 @@ class MountService extends IMountService.Stub return; } - mConnector = new NativeDaemonConnector(this, "vold", 10, "VoldConnector"); + /* + * Create the connection to vold with a maximum queue of twice the + * amount of containers we'd ever expect to have. This keeps an + * "asec list" from blocking a thread repeatedly. + */ + mConnector = new NativeDaemonConnector(this, "vold", + PackageManagerService.MAX_CONTAINERS * 2, VOLD_TAG); mReady = false; - Thread thread = new Thread(mConnector, NativeDaemonConnector.class.getName()); + Thread thread = new Thread(mConnector, VOLD_TAG); thread.start(); } diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index c15615064fccb..4a69f2047e945 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -55,6 +55,8 @@ class NetworkManagementService extends INetworkManagementService.Stub { private static final String TAG = "NetworkManagmentService"; + private static final String NETD_TAG = "NetdConnector"; + class NetdResponseCode { public static final int InterfaceListResult = 110; public static final int TetherInterfaceListResult = 111; @@ -101,8 +103,8 @@ class NetworkManagementService extends INetworkManagementService.Stub { } mConnector = new NativeDaemonConnector( - new NetdCallbackReceiver(), "netd", 10, "NetdConnector"); - Thread thread = new Thread(mConnector, NativeDaemonConnector.class.getName()); + new NetdCallbackReceiver(), "netd", 10, NETD_TAG); + Thread thread = new Thread(mConnector, NETD_TAG); thread.start(); } diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 1141fdcea7be1..f5862dfedac82 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -9383,17 +9383,18 @@ class PackageManagerService extends IPackageManager.Stub { // ------- apps on sdcard specific code ------- static final boolean DEBUG_SD_INSTALL = false; - final private String mSdEncryptKey = "AppsOnSD"; - final private String mSdEncryptAlg = "AES"; + private static final String SD_ENCRYPTION_KEYSTORE_NAME = "AppsOnSD"; + private static final String SD_ENCRYPTION_ALGORITHM = "AES"; + static final int MAX_CONTAINERS = 250; private boolean mMediaMounted = false; - private static final int MAX_CONTAINERS = 250; private String getEncryptKey() { try { - String sdEncKey = SystemKeyStore.getInstance().retrieveKeyHexString(mSdEncryptKey); + String sdEncKey = SystemKeyStore.getInstance().retrieveKeyHexString( + SD_ENCRYPTION_KEYSTORE_NAME); if (sdEncKey == null) { - sdEncKey = SystemKeyStore.getInstance(). - generateNewKeyHexString(128, mSdEncryptAlg, mSdEncryptKey); + sdEncKey = SystemKeyStore.getInstance().generateNewKeyHexString(128, + SD_ENCRYPTION_ALGORITHM, SD_ENCRYPTION_KEYSTORE_NAME); if (sdEncKey == null) { Slog.e(TAG, "Failed to create encryption keys"); return null;