Merge "PowerManager: cleanup async traces"

This commit is contained in:
Tim Murray
2022-10-04 21:21:07 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 10 deletions

View File

@@ -2913,6 +2913,7 @@ public final class PowerManager {
private int mFlags;
@UnsupportedAppUsage
private String mTag;
private int mTagHash;
private final String mPackageName;
private final IBinder mToken;
private int mInternalCount;
@@ -2921,7 +2922,6 @@ public final class PowerManager {
private boolean mHeld;
private WorkSource mWorkSource;
private String mHistoryTag;
private final String mTraceName;
private final int mDisplayId;
private WakeLockStateListener mListener;
private IWakeLockCallback mCallback;
@@ -2931,9 +2931,9 @@ public final class PowerManager {
WakeLock(int flags, String tag, String packageName, int displayId) {
mFlags = flags;
mTag = tag;
mTagHash = mTag.hashCode();
mPackageName = packageName;
mToken = new Binder();
mTraceName = "WakeLock (" + mTag + ")";
mDisplayId = displayId;
}
@@ -2942,7 +2942,8 @@ public final class PowerManager {
synchronized (mToken) {
if (mHeld) {
Log.wtf(TAG, "WakeLock finalized while still held: " + mTag);
Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0);
Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER,
"WakeLocks", mTagHash);
try {
mService.releaseWakeLock(mToken, 0);
} catch (RemoteException e) {
@@ -3012,7 +3013,8 @@ public final class PowerManager {
// should immediately acquire the wake lock once again despite never having
// been explicitly released by the keyguard.
mHandler.removeCallbacks(mReleaser);
Trace.asyncTraceBegin(Trace.TRACE_TAG_POWER, mTraceName, 0);
Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_POWER,
"WakeLocks", mTag, mTagHash);
try {
mService.acquireWakeLock(mToken, mFlags, mTag, mPackageName, mWorkSource,
mHistoryTag, mDisplayId, mCallback);
@@ -3060,7 +3062,8 @@ public final class PowerManager {
if (!mRefCounted || mInternalCount == 0) {
mHandler.removeCallbacks(mReleaser);
if (mHeld) {
Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0);
Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER,
"WakeLocks", mTagHash);
try {
mService.releaseWakeLock(mToken, flags);
} catch (RemoteException e) {
@@ -3137,6 +3140,7 @@ public final class PowerManager {
/** @hide */
public void setTag(String tag) {
mTag = tag;
mTagHash = mTag.hashCode();
}
/** @hide */

View File

@@ -5316,7 +5316,7 @@ public final class PowerManagerService extends SystemService
private final class SuspendBlockerImpl implements SuspendBlocker {
private static final String UNKNOWN_ID = "unknown";
private final String mName;
private final String mTraceName;
private final int mNameHash;
private int mReferenceCount;
// Maps suspend blocker IDs to a list (LongArray) of open acquisitions for the suspend
@@ -5325,7 +5325,7 @@ public final class PowerManagerService extends SystemService
public SuspendBlockerImpl(String name) {
mName = name;
mTraceName = "SuspendBlocker (" + name + ")";
mNameHash = mName.hashCode();
}
@Override
@@ -5336,7 +5336,8 @@ public final class PowerManagerService extends SystemService
+ "\" was finalized without being released!");
mReferenceCount = 0;
mNativeWrapper.nativeReleaseSuspendBlocker(mName);
Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0);
Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER,
"SuspendBlockers", mNameHash);
}
} finally {
super.finalize();
@@ -5357,7 +5358,8 @@ public final class PowerManagerService extends SystemService
if (DEBUG_SPEW) {
Slog.d(TAG, "Acquiring suspend blocker \"" + mName + "\".");
}
Trace.asyncTraceBegin(Trace.TRACE_TAG_POWER, mTraceName, 0);
Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_POWER,
"SuspendBlockers", mName, mNameHash);
mNativeWrapper.nativeAcquireSuspendBlocker(mName);
}
}
@@ -5378,7 +5380,10 @@ public final class PowerManagerService extends SystemService
Slog.d(TAG, "Releasing suspend blocker \"" + mName + "\".");
}
mNativeWrapper.nativeReleaseSuspendBlocker(mName);
Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0);
if (Trace.isTagEnabled(Trace.TRACE_TAG_POWER)) {
Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER,
"SuspendBlockers", mNameHash);
}
} else if (mReferenceCount < 0) {
Slog.wtf(TAG, "Suspend blocker \"" + mName
+ "\" was released without being acquired!", new Throwable());