Loading core/java/com/android/internal/os/BatteryStatsImpl.java +50 −19 Original line number Original line Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.util.PrintWriterPrinter; import android.util.Printer; import android.util.Printer; import android.util.Slog; import android.util.Slog; import android.util.SparseArray; import android.util.SparseArray; import android.util.TimeUtils; import java.io.BufferedReader; import java.io.BufferedReader; import java.io.File; import java.io.File; Loading Loading @@ -4870,8 +4871,8 @@ public final class BatteryStatsImpl extends BatteryStats { return 0; return 0; } } void readHistory(Parcel in) { void readHistory(Parcel in, boolean andOldHistory) { mHistoryBaseTime = in.readLong(); final long historyBaseTime = in.readLong(); mHistoryBuffer.setDataSize(0); mHistoryBuffer.setDataSize(0); mHistoryBuffer.setDataPosition(0); mHistoryBuffer.setDataPosition(0); Loading @@ -4889,15 +4890,35 @@ public final class BatteryStatsImpl extends BatteryStats { in.setDataPosition(curPos + bufSize); in.setDataPosition(curPos + bufSize); } } long oldnow = SystemClock.elapsedRealtime() - (5*60*1000); if (andOldHistory) { if (oldnow > 0) { readOldHistory(in); // If the system process has restarted, but not the entire } // system, then the mHistoryBaseTime already accounts for // much of the elapsed time. We thus want to adjust it back, if (DEBUG_HISTORY) { // to avoid large gaps in the data. We determine we are StringBuilder sb = new StringBuilder(128); // in this case by arbitrarily saying it is so if at this sb.append("****************** OLD mHistoryBaseTime: "); // point in boot the elapsed time is already more than 5 minutes. TimeUtils.formatDuration(mHistoryBaseTime, sb); mHistoryBaseTime -= oldnow; Slog.i(TAG, sb.toString()); } mHistoryBaseTime = historyBaseTime; if (DEBUG_HISTORY) { StringBuilder sb = new StringBuilder(128); sb.append("****************** NEW mHistoryBaseTime: "); TimeUtils.formatDuration(mHistoryBaseTime, sb); Slog.i(TAG, sb.toString()); } // We are just arbitrarily going to insert 1 minute from the sample of // the last run until samples in this run. if (mHistoryBaseTime > 0) { long oldnow = SystemClock.elapsedRealtime(); mHistoryBaseTime = (mHistoryBaseTime - oldnow) + 60*1000; if (DEBUG_HISTORY) { StringBuilder sb = new StringBuilder(128); sb.append("****************** ADJUSTED mHistoryBaseTime: "); TimeUtils.formatDuration(mHistoryBaseTime, sb); Slog.i(TAG, sb.toString()); } } } } } Loading @@ -4910,12 +4931,24 @@ public final class BatteryStatsImpl extends BatteryStats { } } } } void writeHistory(Parcel out) { void writeHistory(Parcel out, boolean andOldHistory) { out.writeLong(mLastHistoryTime); if (DEBUG_HISTORY) { StringBuilder sb = new StringBuilder(128); sb.append("****************** WRITING mHistoryBaseTime: "); TimeUtils.formatDuration(mHistoryBaseTime, sb); sb.append(" mLastHistoryTime: "); TimeUtils.formatDuration(mLastHistoryTime, sb); Slog.i(TAG, sb.toString()); } out.writeLong(mHistoryBaseTime + mLastHistoryTime); out.writeInt(mHistoryBuffer.dataSize()); out.writeInt(mHistoryBuffer.dataSize()); if (DEBUG_HISTORY) Slog.i(TAG, "***************** WRITING HISTORY: " if (DEBUG_HISTORY) Slog.i(TAG, "***************** WRITING HISTORY: " + mHistoryBuffer.dataSize() + " bytes at " + out.dataPosition()); + mHistoryBuffer.dataSize() + " bytes at " + out.dataPosition()); out.appendFrom(mHistoryBuffer, 0, mHistoryBuffer.dataSize()); out.appendFrom(mHistoryBuffer, 0, mHistoryBuffer.dataSize()); if (andOldHistory) { writeOldHistory(out); } } } void writeOldHistory(Parcel out) { void writeOldHistory(Parcel out) { Loading @@ -4935,8 +4968,7 @@ public final class BatteryStatsImpl extends BatteryStats { return; return; } } readHistory(in); readHistory(in, true); readOldHistory(in); mStartCount = in.readInt(); mStartCount = in.readInt(); mBatteryUptime = in.readLong(); mBatteryUptime = in.readLong(); Loading Loading @@ -5136,8 +5168,7 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(VERSION); out.writeInt(VERSION); writeHistory(out); writeHistory(out, true); writeOldHistory(out); out.writeInt(mStartCount); out.writeInt(mStartCount); out.writeLong(computeBatteryUptime(NOW_SYS, STATS_SINCE_CHARGED)); out.writeLong(computeBatteryUptime(NOW_SYS, STATS_SINCE_CHARGED)); Loading Loading @@ -5340,7 +5371,7 @@ public final class BatteryStatsImpl extends BatteryStats { throw new ParcelFormatException("Bad magic number"); throw new ParcelFormatException("Bad magic number"); } } readHistory(in); readHistory(in, false); mStartCount = in.readInt(); mStartCount = in.readInt(); mBatteryUptime = in.readLong(); mBatteryUptime = in.readLong(); Loading Loading @@ -5461,7 +5492,7 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(MAGIC); out.writeInt(MAGIC); writeHistory(out); writeHistory(out, false); out.writeInt(mStartCount); out.writeInt(mStartCount); out.writeLong(mBatteryUptime); out.writeLong(mBatteryUptime); Loading services/java/com/android/server/am/BatteryStatsService.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -446,6 +446,15 @@ public final class BatteryStatsService extends IBatteryStats.Stub { Binder.getCallingPid(), Binder.getCallingUid(), null); Binder.getCallingPid(), Binder.getCallingUid(), null); } } private void dumpHelp(PrintWriter pw) { pw.println("Battery stats (batteryinfo) dump options:"); pw.println(" [--checkin] [--reset] [--write] [-h]"); pw.println(" --checkin: format output for a checkin report."); pw.println(" --reset: reset the stats, clearing all current data."); pw.println(" --write: force write current collected stats to disk."); pw.println(" -h: print this help text."); } @Override @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { boolean isCheckin = false; boolean isCheckin = false; Loading @@ -466,8 +475,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub { pw.println("Battery stats written."); pw.println("Battery stats written."); noOutput = true; noOutput = true; } } } else if ("-h".equals(arg)) { dumpHelp(pw); return; } else { } else { pw.println("Unknown option: " + arg); pw.println("Unknown option: " + arg); dumpHelp(pw); } } } } } } Loading Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +50 −19 Original line number Original line Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.util.PrintWriterPrinter; import android.util.Printer; import android.util.Printer; import android.util.Slog; import android.util.Slog; import android.util.SparseArray; import android.util.SparseArray; import android.util.TimeUtils; import java.io.BufferedReader; import java.io.BufferedReader; import java.io.File; import java.io.File; Loading Loading @@ -4870,8 +4871,8 @@ public final class BatteryStatsImpl extends BatteryStats { return 0; return 0; } } void readHistory(Parcel in) { void readHistory(Parcel in, boolean andOldHistory) { mHistoryBaseTime = in.readLong(); final long historyBaseTime = in.readLong(); mHistoryBuffer.setDataSize(0); mHistoryBuffer.setDataSize(0); mHistoryBuffer.setDataPosition(0); mHistoryBuffer.setDataPosition(0); Loading @@ -4889,15 +4890,35 @@ public final class BatteryStatsImpl extends BatteryStats { in.setDataPosition(curPos + bufSize); in.setDataPosition(curPos + bufSize); } } long oldnow = SystemClock.elapsedRealtime() - (5*60*1000); if (andOldHistory) { if (oldnow > 0) { readOldHistory(in); // If the system process has restarted, but not the entire } // system, then the mHistoryBaseTime already accounts for // much of the elapsed time. We thus want to adjust it back, if (DEBUG_HISTORY) { // to avoid large gaps in the data. We determine we are StringBuilder sb = new StringBuilder(128); // in this case by arbitrarily saying it is so if at this sb.append("****************** OLD mHistoryBaseTime: "); // point in boot the elapsed time is already more than 5 minutes. TimeUtils.formatDuration(mHistoryBaseTime, sb); mHistoryBaseTime -= oldnow; Slog.i(TAG, sb.toString()); } mHistoryBaseTime = historyBaseTime; if (DEBUG_HISTORY) { StringBuilder sb = new StringBuilder(128); sb.append("****************** NEW mHistoryBaseTime: "); TimeUtils.formatDuration(mHistoryBaseTime, sb); Slog.i(TAG, sb.toString()); } // We are just arbitrarily going to insert 1 minute from the sample of // the last run until samples in this run. if (mHistoryBaseTime > 0) { long oldnow = SystemClock.elapsedRealtime(); mHistoryBaseTime = (mHistoryBaseTime - oldnow) + 60*1000; if (DEBUG_HISTORY) { StringBuilder sb = new StringBuilder(128); sb.append("****************** ADJUSTED mHistoryBaseTime: "); TimeUtils.formatDuration(mHistoryBaseTime, sb); Slog.i(TAG, sb.toString()); } } } } } Loading @@ -4910,12 +4931,24 @@ public final class BatteryStatsImpl extends BatteryStats { } } } } void writeHistory(Parcel out) { void writeHistory(Parcel out, boolean andOldHistory) { out.writeLong(mLastHistoryTime); if (DEBUG_HISTORY) { StringBuilder sb = new StringBuilder(128); sb.append("****************** WRITING mHistoryBaseTime: "); TimeUtils.formatDuration(mHistoryBaseTime, sb); sb.append(" mLastHistoryTime: "); TimeUtils.formatDuration(mLastHistoryTime, sb); Slog.i(TAG, sb.toString()); } out.writeLong(mHistoryBaseTime + mLastHistoryTime); out.writeInt(mHistoryBuffer.dataSize()); out.writeInt(mHistoryBuffer.dataSize()); if (DEBUG_HISTORY) Slog.i(TAG, "***************** WRITING HISTORY: " if (DEBUG_HISTORY) Slog.i(TAG, "***************** WRITING HISTORY: " + mHistoryBuffer.dataSize() + " bytes at " + out.dataPosition()); + mHistoryBuffer.dataSize() + " bytes at " + out.dataPosition()); out.appendFrom(mHistoryBuffer, 0, mHistoryBuffer.dataSize()); out.appendFrom(mHistoryBuffer, 0, mHistoryBuffer.dataSize()); if (andOldHistory) { writeOldHistory(out); } } } void writeOldHistory(Parcel out) { void writeOldHistory(Parcel out) { Loading @@ -4935,8 +4968,7 @@ public final class BatteryStatsImpl extends BatteryStats { return; return; } } readHistory(in); readHistory(in, true); readOldHistory(in); mStartCount = in.readInt(); mStartCount = in.readInt(); mBatteryUptime = in.readLong(); mBatteryUptime = in.readLong(); Loading Loading @@ -5136,8 +5168,7 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(VERSION); out.writeInt(VERSION); writeHistory(out); writeHistory(out, true); writeOldHistory(out); out.writeInt(mStartCount); out.writeInt(mStartCount); out.writeLong(computeBatteryUptime(NOW_SYS, STATS_SINCE_CHARGED)); out.writeLong(computeBatteryUptime(NOW_SYS, STATS_SINCE_CHARGED)); Loading Loading @@ -5340,7 +5371,7 @@ public final class BatteryStatsImpl extends BatteryStats { throw new ParcelFormatException("Bad magic number"); throw new ParcelFormatException("Bad magic number"); } } readHistory(in); readHistory(in, false); mStartCount = in.readInt(); mStartCount = in.readInt(); mBatteryUptime = in.readLong(); mBatteryUptime = in.readLong(); Loading Loading @@ -5461,7 +5492,7 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeInt(MAGIC); out.writeInt(MAGIC); writeHistory(out); writeHistory(out, false); out.writeInt(mStartCount); out.writeInt(mStartCount); out.writeLong(mBatteryUptime); out.writeLong(mBatteryUptime); Loading
services/java/com/android/server/am/BatteryStatsService.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -446,6 +446,15 @@ public final class BatteryStatsService extends IBatteryStats.Stub { Binder.getCallingPid(), Binder.getCallingUid(), null); Binder.getCallingPid(), Binder.getCallingUid(), null); } } private void dumpHelp(PrintWriter pw) { pw.println("Battery stats (batteryinfo) dump options:"); pw.println(" [--checkin] [--reset] [--write] [-h]"); pw.println(" --checkin: format output for a checkin report."); pw.println(" --reset: reset the stats, clearing all current data."); pw.println(" --write: force write current collected stats to disk."); pw.println(" -h: print this help text."); } @Override @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { boolean isCheckin = false; boolean isCheckin = false; Loading @@ -466,8 +475,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub { pw.println("Battery stats written."); pw.println("Battery stats written."); noOutput = true; noOutput = true; } } } else if ("-h".equals(arg)) { dumpHelp(pw); return; } else { } else { pw.println("Unknown option: " + arg); pw.println("Unknown option: " + arg); dumpHelp(pw); } } } } } } Loading