am bd9b25ef: am b6a09299: Merge "BatteryStats: Record doze wake locks" into mnc-dev

* commit 'bd9b25efb8cdaa4772f730259418d66ba58beb40':
  BatteryStats: Record doze wake locks
This commit is contained in:
Adam Lesinski
2015-06-19 21:39:57 +00:00
committed by Android Git Automerger
2 changed files with 59 additions and 13 deletions

View File

@@ -65,7 +65,7 @@ public abstract class BatteryStats implements Parcelable {
* A constant indicating a window wake lock timer.
*/
public static final int WAKE_TYPE_WINDOW = 2;
/**
* A constant indicating a sensor timer.
*/
@@ -141,6 +141,11 @@ public abstract class BatteryStats implements Parcelable {
*/
public static final int CAMERA_TURNED_ON = 17;
/**
* A constant indicating a doze wake lock timer.
*/
public static final int WAKE_TYPE_DOZE = 18;
/**
* Include all of the data in the stats, including previously saved data.
*/
@@ -3834,6 +3839,7 @@ public abstract class BatteryStats implements Parcelable {
final ArrayMap<String, ? extends BatteryStats.Uid.Wakelock> wakelocks
= u.getWakelockStats();
long totalFullWakelock = 0, totalPartialWakelock = 0, totalWindowWakelock = 0;
long totalDozeWakelock = 0;
int countWakelock = 0;
for (int iw=wakelocks.size()-1; iw>=0; iw--) {
final Uid.Wakelock wl = wakelocks.valueAt(iw);
@@ -3848,19 +3854,21 @@ public abstract class BatteryStats implements Parcelable {
"partial", which, linePrefix);
linePrefix = printWakeLock(sb, wl.getWakeTime(WAKE_TYPE_WINDOW), rawRealtime,
"window", which, linePrefix);
if (true || !linePrefix.equals(": ")) {
sb.append(" realtime");
// Only print out wake locks that were held
pw.println(sb.toString());
uidActivity = true;
countWakelock++;
}
linePrefix = printWakeLock(sb, wl.getWakeTime(WAKE_TYPE_DOZE), rawRealtime,
"doze", which, linePrefix);
sb.append(" realtime");
pw.println(sb.toString());
uidActivity = true;
countWakelock++;
totalFullWakelock += computeWakeLock(wl.getWakeTime(WAKE_TYPE_FULL),
rawRealtime, which);
totalPartialWakelock += computeWakeLock(wl.getWakeTime(WAKE_TYPE_PARTIAL),
rawRealtime, which);
totalWindowWakelock += computeWakeLock(wl.getWakeTime(WAKE_TYPE_WINDOW),
rawRealtime, which);
totalDozeWakelock += computeWakeLock(wl.getWakeTime(WAKE_TYPE_DOZE),
rawRealtime, which);
}
if (countWakelock > 1) {
if (totalFullWakelock != 0 || totalPartialWakelock != 0
@@ -3890,6 +3898,14 @@ public abstract class BatteryStats implements Parcelable {
formatTimeMs(sb, totalWindowWakelock);
sb.append("window");
}
if (totalDozeWakelock != 0) {
if (needComma) {
sb.append(",");
}
needComma = true;
formatTimeMs(sb, totalDozeWakelock);
sb.append("doze");
}
sb.append(" realtime");
pw.println(sb.toString());
}

View File

@@ -106,7 +106,7 @@ public final class BatteryStatsImpl extends BatteryStats {
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
// Current on-disk Parcel version
private static final int VERSION = 128 + (USE_OLD_HISTORY ? 1000 : 0);
private static final int VERSION = 129 + (USE_OLD_HISTORY ? 1000 : 0);
// Maximum number of items we will record in the history.
private static final int MAX_HISTORY_ITEMS = 2000;
@@ -208,6 +208,7 @@ public final class BatteryStatsImpl extends BatteryStats {
final ArrayList<StopwatchTimer> mPartialTimers = new ArrayList<>();
final ArrayList<StopwatchTimer> mFullTimers = new ArrayList<>();
final ArrayList<StopwatchTimer> mWindowTimers = new ArrayList<>();
final ArrayList<StopwatchTimer> mDozeTimers = new ArrayList<>();
final SparseArray<ArrayList<StopwatchTimer>> mSensorTimers = new SparseArray<>();
final ArrayList<StopwatchTimer> mWifiRunningTimers = new ArrayList<>();
final ArrayList<StopwatchTimer> mFullWifiLockTimers = new ArrayList<>();
@@ -5647,6 +5648,11 @@ public final class BatteryStatsImpl extends BatteryStats {
*/
StopwatchTimer mTimerWindow;
/**
* How long (in ms) this uid has had a doze wake lock.
*/
StopwatchTimer mTimerDoze;
/**
* Reads a possibly null Timer from a Parcel. The timer is associated with the
* proper timer pool from the given BatteryStatsImpl object.
@@ -5674,6 +5680,9 @@ public final class BatteryStatsImpl extends BatteryStats {
if (mTimerWindow != null) {
wlactive |= !mTimerWindow.reset(false);
}
if (mTimerDoze != null) {
wlactive |= !mTimerDoze.reset(false);
}
if (!wlactive) {
if (mTimerFull != null) {
mTimerFull.detach();
@@ -5687,6 +5696,10 @@ public final class BatteryStatsImpl extends BatteryStats {
mTimerWindow.detach();
mTimerWindow = null;
}
if (mTimerDoze != null) {
mTimerDoze.detach();
mTimerDoze = null;
}
}
return !wlactive;
}
@@ -5694,16 +5707,16 @@ public final class BatteryStatsImpl extends BatteryStats {
void readFromParcelLocked(TimeBase timeBase, TimeBase screenOffTimeBase, Parcel in) {
mTimerPartial = readTimerFromParcel(WAKE_TYPE_PARTIAL,
mPartialTimers, screenOffTimeBase, in);
mTimerFull = readTimerFromParcel(WAKE_TYPE_FULL,
mFullTimers, timeBase, in);
mTimerWindow = readTimerFromParcel(WAKE_TYPE_WINDOW,
mWindowTimers, timeBase, in);
mTimerFull = readTimerFromParcel(WAKE_TYPE_FULL, mFullTimers, timeBase, in);
mTimerWindow = readTimerFromParcel(WAKE_TYPE_WINDOW, mWindowTimers, timeBase, in);
mTimerDoze = readTimerFromParcel(WAKE_TYPE_DOZE, mDozeTimers, timeBase, in);
}
void writeToParcelLocked(Parcel out, long elapsedRealtimeUs) {
Timer.writeTimerToParcel(out, mTimerPartial, elapsedRealtimeUs);
Timer.writeTimerToParcel(out, mTimerFull, elapsedRealtimeUs);
Timer.writeTimerToParcel(out, mTimerWindow, elapsedRealtimeUs);
Timer.writeTimerToParcel(out, mTimerDoze, elapsedRealtimeUs);
}
@Override
@@ -5712,6 +5725,7 @@ public final class BatteryStatsImpl extends BatteryStats {
case WAKE_TYPE_FULL: return mTimerFull;
case WAKE_TYPE_PARTIAL: return mTimerPartial;
case WAKE_TYPE_WINDOW: return mTimerWindow;
case WAKE_TYPE_DOZE: return mTimerDoze;
default: throw new IllegalArgumentException("type = " + type);
}
}
@@ -5743,6 +5757,13 @@ public final class BatteryStatsImpl extends BatteryStats {
mTimerWindow = t;
}
return t;
case WAKE_TYPE_DOZE:
t = mTimerDoze;
if (t == null) {
t = new StopwatchTimer(Uid.this, WAKE_TYPE_DOZE,
mDozeTimers, mOnBatteryTimeBase);
mTimerDoze = t;
}
default:
throw new IllegalArgumentException("type=" + type);
}
@@ -6599,6 +6620,9 @@ public final class BatteryStatsImpl extends BatteryStats {
if (in.readInt() != 0) {
wl.getStopwatchTimer(WAKE_TYPE_WINDOW).readSummaryFromParcelLocked(in);
}
if (in.readInt() != 0) {
wl.getStopwatchTimer(WAKE_TYPE_DOZE).readSummaryFromParcelLocked(in);
}
}
public StopwatchTimer getSensorTimerLocked(int sensor, boolean create) {
@@ -9586,6 +9610,12 @@ public final class BatteryStatsImpl extends BatteryStats {
} else {
out.writeInt(0);
}
if (wl.mTimerDoze != null) {
out.writeInt(1);
wl.mTimerDoze.writeSummaryFromParcelLocked(out, NOWREAL_SYS);
} else {
out.writeInt(0);
}
}
final ArrayMap<String, StopwatchTimer> syncStats = u.mSyncStats.getMap();