Loading services/core/java/com/android/server/MountService.java +1 −0 Original line number Diff line number Diff line Loading @@ -1440,6 +1440,7 @@ class MountService extends IMountService.Stub mConnector = new NativeDaemonConnector(this, "vold", MAX_CONTAINERS * 2, VOLD_TAG, 25, null); mConnector.setDebug(true); mConnector.setLockWarning(mLock); Thread thread = new Thread(mConnector, VOLD_TAG); thread.start(); Loading services/core/java/com/android/server/NativeDaemonConnector.java +14 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Message; import android.os.PowerManager; import android.os.SystemClock; import android.util.LocalLog; import android.util.Log; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; Loading Loading @@ -57,6 +58,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo private LocalLog mLocalLog; private volatile boolean mDebug = false; private volatile Object mLockWarning; private final ResponseQueue mResponseQueue; Loading Loading @@ -107,6 +109,14 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo mDebug = debug; } /** * Yell loudly if someone tries making future {@link #execute(Command)} calls while holding a * lock on the given object. */ public void setLockWarning(Object lockWarning) { mLockWarning = lockWarning; } @Override public void run() { mCallbackHandler = new Handler(mLooper, this); Loading Loading @@ -394,6 +404,10 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo */ public NativeDaemonEvent[] executeForList(long timeoutMs, String cmd, Object... args) throws NativeDaemonConnectorException { if (mLockWarning != null && Thread.holdsLock(mLockWarning)) { Log.wtf(TAG, "Calling thread is holding lock " + mLockWarning, new Throwable()); } final long startTime = SystemClock.elapsedRealtime(); final ArrayList<NativeDaemonEvent> events = Lists.newArrayList(); Loading Loading
services/core/java/com/android/server/MountService.java +1 −0 Original line number Diff line number Diff line Loading @@ -1440,6 +1440,7 @@ class MountService extends IMountService.Stub mConnector = new NativeDaemonConnector(this, "vold", MAX_CONTAINERS * 2, VOLD_TAG, 25, null); mConnector.setDebug(true); mConnector.setLockWarning(mLock); Thread thread = new Thread(mConnector, VOLD_TAG); thread.start(); Loading
services/core/java/com/android/server/NativeDaemonConnector.java +14 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Message; import android.os.PowerManager; import android.os.SystemClock; import android.util.LocalLog; import android.util.Log; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; Loading Loading @@ -57,6 +58,7 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo private LocalLog mLocalLog; private volatile boolean mDebug = false; private volatile Object mLockWarning; private final ResponseQueue mResponseQueue; Loading Loading @@ -107,6 +109,14 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo mDebug = debug; } /** * Yell loudly if someone tries making future {@link #execute(Command)} calls while holding a * lock on the given object. */ public void setLockWarning(Object lockWarning) { mLockWarning = lockWarning; } @Override public void run() { mCallbackHandler = new Handler(mLooper, this); Loading Loading @@ -394,6 +404,10 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo */ public NativeDaemonEvent[] executeForList(long timeoutMs, String cmd, Object... args) throws NativeDaemonConnectorException { if (mLockWarning != null && Thread.holdsLock(mLockWarning)) { Log.wtf(TAG, "Calling thread is holding lock " + mLockWarning, new Throwable()); } final long startTime = SystemClock.elapsedRealtime(); final ArrayList<NativeDaemonEvent> events = Lists.newArrayList(); Loading