am 07bb03c4: Merge "Avoid deadlock between ActivityManagerService and ProcessStatsService."

* commit '07bb03c42343d54d0a8eb609c74eebd9ecd0df9d':
  Avoid deadlock between ActivityManagerService and ProcessStatsService.
This commit is contained in:
Olawale Ogunwale
2014-12-18 17:00:07 +00:00
committed by Android Git Automerger

View File

@@ -445,14 +445,14 @@ public final class ProcessStatsService extends IProcessStats.Stub {
mAm.mContext.enforceCallingOrSelfPermission( mAm.mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.PACKAGE_USAGE_STATS, null); android.Manifest.permission.PACKAGE_USAGE_STATS, null);
Parcel current = Parcel.obtain(); Parcel current = Parcel.obtain();
mWriteLock.lock();
try {
synchronized (mAm) { synchronized (mAm) {
long now = SystemClock.uptimeMillis(); long now = SystemClock.uptimeMillis();
mProcessStats.mTimePeriodEndRealtime = SystemClock.elapsedRealtime(); mProcessStats.mTimePeriodEndRealtime = SystemClock.elapsedRealtime();
mProcessStats.mTimePeriodEndUptime = now; mProcessStats.mTimePeriodEndUptime = now;
mProcessStats.writeToParcel(current, now, 0); mProcessStats.writeToParcel(current, now, 0);
} }
mWriteLock.lock();
try {
if (historic != null) { if (historic != null) {
ArrayList<String> files = getCommittedFiles(0, false, true); ArrayList<String> files = getCommittedFiles(0, false, true);
if (files != null) { if (files != null) {
@@ -476,8 +476,6 @@ public final class ProcessStatsService extends IProcessStats.Stub {
public ParcelFileDescriptor getStatsOverTime(long minTime) { public ParcelFileDescriptor getStatsOverTime(long minTime) {
mAm.mContext.enforceCallingOrSelfPermission( mAm.mContext.enforceCallingOrSelfPermission(
android.Manifest.permission.PACKAGE_USAGE_STATS, null); android.Manifest.permission.PACKAGE_USAGE_STATS, null);
mWriteLock.lock();
try {
Parcel current = Parcel.obtain(); Parcel current = Parcel.obtain();
long curTime; long curTime;
synchronized (mAm) { synchronized (mAm) {
@@ -488,6 +486,8 @@ public final class ProcessStatsService extends IProcessStats.Stub {
curTime = mProcessStats.mTimePeriodEndRealtime curTime = mProcessStats.mTimePeriodEndRealtime
- mProcessStats.mTimePeriodStartRealtime; - mProcessStats.mTimePeriodStartRealtime;
} }
mWriteLock.lock();
try {
if (curTime < minTime) { if (curTime < minTime) {
// Need to add in older stats to reach desired time. // Need to add in older stats to reach desired time.
ArrayList<String> files = getCommittedFiles(0, false, true); ArrayList<String> files = getCommittedFiles(0, false, true);