Loading apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java +7 −7 Original line number Diff line number Diff line Loading @@ -313,7 +313,7 @@ public final class JobPackageTracker { } void dump(PrintWriter pw, String header, String prefix, long now, long nowElapsed, int filterUid) { int filterAppId) { final long period = getTotalTime(now); pw.print(prefix); pw.print(header); pw.print(" at "); pw.print(DateFormat.format("yyyy-MM-dd-HH-mm-ss", mStartClockTime).toString()); Loading @@ -325,7 +325,7 @@ public final class JobPackageTracker { final int NE = mEntries.size(); for (int i = 0; i < NE; i++) { int uid = mEntries.keyAt(i); if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) { if (filterAppId != -1 && filterAppId != UserHandle.getAppId(uid)) { continue; } ArrayMap<String, PackageEntry> uidMap = mEntries.valueAt(i); Loading Loading @@ -520,7 +520,7 @@ public final class JobPackageTracker { return time / (float)period; } public void dump(PrintWriter pw, String prefix, int filterUid) { public void dump(PrintWriter pw, String prefix, int filterAppId) { final long now = sUptimeMillisClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final DataSet total; Loading @@ -533,11 +533,11 @@ public final class JobPackageTracker { mCurDataSet.addTo(total, now); for (int i = 1; i < mLastDataSets.length; i++) { if (mLastDataSets[i] != null) { mLastDataSets[i].dump(pw, "Historical stats", prefix, now, nowElapsed, filterUid); mLastDataSets[i].dump(pw, "Historical stats", prefix, now, nowElapsed, filterAppId); pw.println(); } } total.dump(pw, "Current stats", prefix, now, nowElapsed, filterUid); total.dump(pw, "Current stats", prefix, now, nowElapsed, filterAppId); } public void dump(ProtoOutputStream proto, long fieldId, int filterUid) { Loading Loading @@ -566,7 +566,7 @@ public final class JobPackageTracker { proto.end(token); } public boolean dumpHistory(PrintWriter pw, String prefix, int filterUid) { public boolean dumpHistory(PrintWriter pw, String prefix, int filterAppId) { final int size = mEventIndices.size(); if (size <= 0) { return false; Loading @@ -576,7 +576,7 @@ public final class JobPackageTracker { for (int i=0; i<size; i++) { final int index = mEventIndices.indexOf(i); final int uid = mEventUids[index]; if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) { if (filterAppId != -1 && filterAppId != UserHandle.getAppId(uid)) { continue; } final int cmd = mEventCmds[index] & EVENT_CMD_MASK; Loading apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +94 −47 Original line number Diff line number Diff line Loading @@ -3091,14 +3091,14 @@ public class JobSchedulerService extends com.android.server.SystemService } void dumpInternal(final IndentingPrintWriter pw, int filterUid) { final int filterUidFinal = UserHandle.getAppId(filterUid); final int filterAppId = UserHandle.getAppId(filterUid); final long now = sSystemClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final long nowUptime = sUptimeMillisClock.millis(); final Predicate<JobStatus> predicate = (js) -> { return filterUidFinal == -1 || UserHandle.getAppId(js.getUid()) == filterUidFinal || UserHandle.getAppId(js.getSourceUid()) == filterUidFinal; return filterAppId == -1 || UserHandle.getAppId(js.getUid()) == filterAppId || UserHandle.getAppId(js.getSourceUid()) == filterAppId; }; synchronized (mLock) { mConstants.dump(pw); Loading @@ -3111,7 +3111,6 @@ public class JobSchedulerService extends com.android.server.SystemService for (int i = mJobRestrictions.size() - 1; i >= 0; i--) { mJobRestrictions.get(i).dumpConstants(pw); pw.println(); } pw.println(); Loading @@ -3122,18 +3121,22 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print("Registered "); pw.print(mJobs.size()); pw.println(" jobs:"); pw.increaseIndent(); boolean jobPrinted = false; if (mJobs.size() > 0) { final List<JobStatus> jobs = mJobs.mJobSet.getAllJobs(); sortJobs(jobs); for (JobStatus job : jobs) { pw.print(" JOB #"); job.printUniqueId(pw); pw.print(": "); pw.println(job.toShortStringExceptUniqueId()); // Skip printing details if the caller requested a filter if (!predicate.test(job)) { continue; } jobPrinted = true; pw.print("JOB #"); job.printUniqueId(pw); pw.print(": "); pw.println(job.toShortStringExceptUniqueId()); pw.increaseIndent(); job.dump(pw, "", true, nowElapsed); pw.print("Restricted due to:"); Loading Loading @@ -3168,10 +3171,15 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" comp="); pw.print(isComponentUsable(job)); pw.println(")"); pw.decreaseIndent(); } } else { } if (!jobPrinted) { pw.println("None."); } pw.decreaseIndent(); for (int i=0; i<mControllers.size(); i++) { pw.println(); pw.println(mControllers.get(i).getClass().getSimpleName() + ":"); Loading @@ -3179,44 +3187,68 @@ public class JobSchedulerService extends com.android.server.SystemService mControllers.get(i).dumpControllerStateLocked(pw, predicate); pw.decreaseIndent(); } pw.println(); pw.println("Uid priority overrides:"); boolean overridePrinted = false; for (int i=0; i< mUidPriorityOverride.size(); i++) { int uid = mUidPriorityOverride.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { pw.print(" "); pw.print(UserHandle.formatUid(uid)); if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { if (!overridePrinted) { overridePrinted = true; pw.println(); pw.println("Uid priority overrides:"); pw.increaseIndent(); } pw.print(UserHandle.formatUid(uid)); pw.print(": "); pw.println(mUidPriorityOverride.valueAt(i)); } } if (mBackingUpUids.size() > 0) { pw.println(); pw.println("Backing up uids:"); boolean first = true; if (overridePrinted) { pw.decreaseIndent(); } boolean backingPrinted = false; for (int i = 0; i < mBackingUpUids.size(); i++) { int uid = mBackingUpUids.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { if (first) { pw.print(" "); first = false; if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { if (!backingPrinted) { pw.println(); pw.println("Backing up uids:"); pw.increaseIndent(); backingPrinted = true; } else { pw.print(", "); } pw.print(UserHandle.formatUid(uid)); } } if (backingPrinted) { pw.decreaseIndent(); pw.println(); } pw.println(); mJobPackageTracker.dump(pw, "", filterUidFinal); mJobPackageTracker.dump(pw, "", filterAppId); pw.println(); if (mJobPackageTracker.dumpHistory(pw, "", filterUidFinal)) { if (mJobPackageTracker.dumpHistory(pw, "", filterAppId)) { pw.println(); } boolean pendingPrinted = false; pw.println("Pending queue:"); pw.increaseIndent(); for (int i=0; i<mPendingJobs.size(); i++) { JobStatus job = mPendingJobs.get(i); if (!predicate.test(job)) { continue; } if (!pendingPrinted) { pendingPrinted = true; } pw.print("Pending #"); pw.print(i); pw.print(": "); pw.println(job.toShortString()); pw.increaseIndent(); job.dump(pw, "", false, nowElapsed); int priority = evaluateJobPriorityLocked(job); pw.print("Evaluated priority: "); Loading @@ -3225,20 +3257,35 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print("Tag: "); pw.println(job.getTag()); pw.print("Enq: "); TimeUtils.formatDuration(job.madePending - nowUptime, pw); pw.decreaseIndent(); pw.println(); } if (!pendingPrinted) { pw.println("None"); } pw.decreaseIndent(); pw.println(); pw.println("Active jobs:"); pw.increaseIndent(); for (int i=0; i<mActiveServices.size(); i++) { JobServiceContext jsc = mActiveServices.get(i); final JobStatus job = jsc.getRunningJobLocked(); if (job != null && !predicate.test(job)) { continue; } pw.print("Slot #"); pw.print(i); pw.print(": "); jsc.dumpLocked(pw, nowElapsed); final JobStatus job = jsc.getRunningJobLocked(); if (job != null) { pw.increaseIndent(); pw.increaseIndent(); job.dump(pw, "", false, nowElapsed); pw.decreaseIndent(); pw.print("Evaluated priority: "); pw.println(JobInfo.getPriorityString(job.lastEvaluatedPriority)); Loading @@ -3246,8 +3293,8 @@ public class JobSchedulerService extends com.android.server.SystemService TimeUtils.formatDuration(job.madeActive - nowUptime, pw); pw.print(", pending for "); TimeUtils.formatDuration(job.madeActive - job.madePending, pw); pw.println(); pw.decreaseIndent(); pw.println(); } } pw.decreaseIndent(); Loading @@ -3269,13 +3316,13 @@ public class JobSchedulerService extends com.android.server.SystemService void dumpInternalProto(final FileDescriptor fd, int filterUid) { ProtoOutputStream proto = new ProtoOutputStream(fd); final int filterUidFinal = UserHandle.getAppId(filterUid); final int filterAppId = UserHandle.getAppId(filterUid); final long now = sSystemClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final long nowUptime = sUptimeMillisClock.millis(); final Predicate<JobStatus> predicate = (js) -> { return filterUidFinal == -1 || UserHandle.getAppId(js.getUid()) == filterUidFinal || UserHandle.getAppId(js.getSourceUid()) == filterUidFinal; return filterAppId == -1 || UserHandle.getAppId(js.getUid()) == filterAppId || UserHandle.getAppId(js.getSourceUid()) == filterAppId; }; synchronized (mLock) { Loading Loading @@ -3348,7 +3395,7 @@ public class JobSchedulerService extends com.android.server.SystemService } for (int i=0; i< mUidPriorityOverride.size(); i++) { int uid = mUidPriorityOverride.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { long pToken = proto.start(JobSchedulerServiceDumpProto.PRIORITY_OVERRIDES); proto.write(JobSchedulerServiceDumpProto.PriorityOverride.UID, uid); proto.write(JobSchedulerServiceDumpProto.PriorityOverride.OVERRIDE_VALUE, Loading @@ -3358,15 +3405,15 @@ public class JobSchedulerService extends com.android.server.SystemService } for (int i = 0; i < mBackingUpUids.size(); i++) { int uid = mBackingUpUids.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { proto.write(JobSchedulerServiceDumpProto.BACKING_UP_UIDS, uid); } } mJobPackageTracker.dump(proto, JobSchedulerServiceDumpProto.PACKAGE_TRACKER, filterUidFinal); filterAppId); mJobPackageTracker.dumpHistory(proto, JobSchedulerServiceDumpProto.HISTORY, filterUidFinal); filterAppId); for (JobStatus job : mPendingJobs) { final long pjToken = proto.start(JobSchedulerServiceDumpProto.PENDING_JOBS); Loading apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public class ThermalStatusRestriction extends JobRestriction { @Override public void dumpConstants(IndentingPrintWriter pw) { pw.print("In thermal throttling?: "); pw.print(mIsThermalRestricted); pw.println(mIsThermalRestricted); } @Override Loading Loading
apex/jobscheduler/service/java/com/android/server/job/JobPackageTracker.java +7 −7 Original line number Diff line number Diff line Loading @@ -313,7 +313,7 @@ public final class JobPackageTracker { } void dump(PrintWriter pw, String header, String prefix, long now, long nowElapsed, int filterUid) { int filterAppId) { final long period = getTotalTime(now); pw.print(prefix); pw.print(header); pw.print(" at "); pw.print(DateFormat.format("yyyy-MM-dd-HH-mm-ss", mStartClockTime).toString()); Loading @@ -325,7 +325,7 @@ public final class JobPackageTracker { final int NE = mEntries.size(); for (int i = 0; i < NE; i++) { int uid = mEntries.keyAt(i); if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) { if (filterAppId != -1 && filterAppId != UserHandle.getAppId(uid)) { continue; } ArrayMap<String, PackageEntry> uidMap = mEntries.valueAt(i); Loading Loading @@ -520,7 +520,7 @@ public final class JobPackageTracker { return time / (float)period; } public void dump(PrintWriter pw, String prefix, int filterUid) { public void dump(PrintWriter pw, String prefix, int filterAppId) { final long now = sUptimeMillisClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final DataSet total; Loading @@ -533,11 +533,11 @@ public final class JobPackageTracker { mCurDataSet.addTo(total, now); for (int i = 1; i < mLastDataSets.length; i++) { if (mLastDataSets[i] != null) { mLastDataSets[i].dump(pw, "Historical stats", prefix, now, nowElapsed, filterUid); mLastDataSets[i].dump(pw, "Historical stats", prefix, now, nowElapsed, filterAppId); pw.println(); } } total.dump(pw, "Current stats", prefix, now, nowElapsed, filterUid); total.dump(pw, "Current stats", prefix, now, nowElapsed, filterAppId); } public void dump(ProtoOutputStream proto, long fieldId, int filterUid) { Loading Loading @@ -566,7 +566,7 @@ public final class JobPackageTracker { proto.end(token); } public boolean dumpHistory(PrintWriter pw, String prefix, int filterUid) { public boolean dumpHistory(PrintWriter pw, String prefix, int filterAppId) { final int size = mEventIndices.size(); if (size <= 0) { return false; Loading @@ -576,7 +576,7 @@ public final class JobPackageTracker { for (int i=0; i<size; i++) { final int index = mEventIndices.indexOf(i); final int uid = mEventUids[index]; if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) { if (filterAppId != -1 && filterAppId != UserHandle.getAppId(uid)) { continue; } final int cmd = mEventCmds[index] & EVENT_CMD_MASK; Loading
apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +94 −47 Original line number Diff line number Diff line Loading @@ -3091,14 +3091,14 @@ public class JobSchedulerService extends com.android.server.SystemService } void dumpInternal(final IndentingPrintWriter pw, int filterUid) { final int filterUidFinal = UserHandle.getAppId(filterUid); final int filterAppId = UserHandle.getAppId(filterUid); final long now = sSystemClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final long nowUptime = sUptimeMillisClock.millis(); final Predicate<JobStatus> predicate = (js) -> { return filterUidFinal == -1 || UserHandle.getAppId(js.getUid()) == filterUidFinal || UserHandle.getAppId(js.getSourceUid()) == filterUidFinal; return filterAppId == -1 || UserHandle.getAppId(js.getUid()) == filterAppId || UserHandle.getAppId(js.getSourceUid()) == filterAppId; }; synchronized (mLock) { mConstants.dump(pw); Loading @@ -3111,7 +3111,6 @@ public class JobSchedulerService extends com.android.server.SystemService for (int i = mJobRestrictions.size() - 1; i >= 0; i--) { mJobRestrictions.get(i).dumpConstants(pw); pw.println(); } pw.println(); Loading @@ -3122,18 +3121,22 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print("Registered "); pw.print(mJobs.size()); pw.println(" jobs:"); pw.increaseIndent(); boolean jobPrinted = false; if (mJobs.size() > 0) { final List<JobStatus> jobs = mJobs.mJobSet.getAllJobs(); sortJobs(jobs); for (JobStatus job : jobs) { pw.print(" JOB #"); job.printUniqueId(pw); pw.print(": "); pw.println(job.toShortStringExceptUniqueId()); // Skip printing details if the caller requested a filter if (!predicate.test(job)) { continue; } jobPrinted = true; pw.print("JOB #"); job.printUniqueId(pw); pw.print(": "); pw.println(job.toShortStringExceptUniqueId()); pw.increaseIndent(); job.dump(pw, "", true, nowElapsed); pw.print("Restricted due to:"); Loading Loading @@ -3168,10 +3171,15 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" comp="); pw.print(isComponentUsable(job)); pw.println(")"); pw.decreaseIndent(); } } else { } if (!jobPrinted) { pw.println("None."); } pw.decreaseIndent(); for (int i=0; i<mControllers.size(); i++) { pw.println(); pw.println(mControllers.get(i).getClass().getSimpleName() + ":"); Loading @@ -3179,44 +3187,68 @@ public class JobSchedulerService extends com.android.server.SystemService mControllers.get(i).dumpControllerStateLocked(pw, predicate); pw.decreaseIndent(); } pw.println(); pw.println("Uid priority overrides:"); boolean overridePrinted = false; for (int i=0; i< mUidPriorityOverride.size(); i++) { int uid = mUidPriorityOverride.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { pw.print(" "); pw.print(UserHandle.formatUid(uid)); if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { if (!overridePrinted) { overridePrinted = true; pw.println(); pw.println("Uid priority overrides:"); pw.increaseIndent(); } pw.print(UserHandle.formatUid(uid)); pw.print(": "); pw.println(mUidPriorityOverride.valueAt(i)); } } if (mBackingUpUids.size() > 0) { pw.println(); pw.println("Backing up uids:"); boolean first = true; if (overridePrinted) { pw.decreaseIndent(); } boolean backingPrinted = false; for (int i = 0; i < mBackingUpUids.size(); i++) { int uid = mBackingUpUids.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { if (first) { pw.print(" "); first = false; if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { if (!backingPrinted) { pw.println(); pw.println("Backing up uids:"); pw.increaseIndent(); backingPrinted = true; } else { pw.print(", "); } pw.print(UserHandle.formatUid(uid)); } } if (backingPrinted) { pw.decreaseIndent(); pw.println(); } pw.println(); mJobPackageTracker.dump(pw, "", filterUidFinal); mJobPackageTracker.dump(pw, "", filterAppId); pw.println(); if (mJobPackageTracker.dumpHistory(pw, "", filterUidFinal)) { if (mJobPackageTracker.dumpHistory(pw, "", filterAppId)) { pw.println(); } boolean pendingPrinted = false; pw.println("Pending queue:"); pw.increaseIndent(); for (int i=0; i<mPendingJobs.size(); i++) { JobStatus job = mPendingJobs.get(i); if (!predicate.test(job)) { continue; } if (!pendingPrinted) { pendingPrinted = true; } pw.print("Pending #"); pw.print(i); pw.print(": "); pw.println(job.toShortString()); pw.increaseIndent(); job.dump(pw, "", false, nowElapsed); int priority = evaluateJobPriorityLocked(job); pw.print("Evaluated priority: "); Loading @@ -3225,20 +3257,35 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print("Tag: "); pw.println(job.getTag()); pw.print("Enq: "); TimeUtils.formatDuration(job.madePending - nowUptime, pw); pw.decreaseIndent(); pw.println(); } if (!pendingPrinted) { pw.println("None"); } pw.decreaseIndent(); pw.println(); pw.println("Active jobs:"); pw.increaseIndent(); for (int i=0; i<mActiveServices.size(); i++) { JobServiceContext jsc = mActiveServices.get(i); final JobStatus job = jsc.getRunningJobLocked(); if (job != null && !predicate.test(job)) { continue; } pw.print("Slot #"); pw.print(i); pw.print(": "); jsc.dumpLocked(pw, nowElapsed); final JobStatus job = jsc.getRunningJobLocked(); if (job != null) { pw.increaseIndent(); pw.increaseIndent(); job.dump(pw, "", false, nowElapsed); pw.decreaseIndent(); pw.print("Evaluated priority: "); pw.println(JobInfo.getPriorityString(job.lastEvaluatedPriority)); Loading @@ -3246,8 +3293,8 @@ public class JobSchedulerService extends com.android.server.SystemService TimeUtils.formatDuration(job.madeActive - nowUptime, pw); pw.print(", pending for "); TimeUtils.formatDuration(job.madeActive - job.madePending, pw); pw.println(); pw.decreaseIndent(); pw.println(); } } pw.decreaseIndent(); Loading @@ -3269,13 +3316,13 @@ public class JobSchedulerService extends com.android.server.SystemService void dumpInternalProto(final FileDescriptor fd, int filterUid) { ProtoOutputStream proto = new ProtoOutputStream(fd); final int filterUidFinal = UserHandle.getAppId(filterUid); final int filterAppId = UserHandle.getAppId(filterUid); final long now = sSystemClock.millis(); final long nowElapsed = sElapsedRealtimeClock.millis(); final long nowUptime = sUptimeMillisClock.millis(); final Predicate<JobStatus> predicate = (js) -> { return filterUidFinal == -1 || UserHandle.getAppId(js.getUid()) == filterUidFinal || UserHandle.getAppId(js.getSourceUid()) == filterUidFinal; return filterAppId == -1 || UserHandle.getAppId(js.getUid()) == filterAppId || UserHandle.getAppId(js.getSourceUid()) == filterAppId; }; synchronized (mLock) { Loading Loading @@ -3348,7 +3395,7 @@ public class JobSchedulerService extends com.android.server.SystemService } for (int i=0; i< mUidPriorityOverride.size(); i++) { int uid = mUidPriorityOverride.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { long pToken = proto.start(JobSchedulerServiceDumpProto.PRIORITY_OVERRIDES); proto.write(JobSchedulerServiceDumpProto.PriorityOverride.UID, uid); proto.write(JobSchedulerServiceDumpProto.PriorityOverride.OVERRIDE_VALUE, Loading @@ -3358,15 +3405,15 @@ public class JobSchedulerService extends com.android.server.SystemService } for (int i = 0; i < mBackingUpUids.size(); i++) { int uid = mBackingUpUids.keyAt(i); if (filterUidFinal == -1 || filterUidFinal == UserHandle.getAppId(uid)) { if (filterAppId == -1 || filterAppId == UserHandle.getAppId(uid)) { proto.write(JobSchedulerServiceDumpProto.BACKING_UP_UIDS, uid); } } mJobPackageTracker.dump(proto, JobSchedulerServiceDumpProto.PACKAGE_TRACKER, filterUidFinal); filterAppId); mJobPackageTracker.dumpHistory(proto, JobSchedulerServiceDumpProto.HISTORY, filterUidFinal); filterAppId); for (JobStatus job : mPendingJobs) { final long pjToken = proto.start(JobSchedulerServiceDumpProto.PENDING_JOBS); Loading
apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public class ThermalStatusRestriction extends JobRestriction { @Override public void dumpConstants(IndentingPrintWriter pw) { pw.print("In thermal throttling?: "); pw.print(mIsThermalRestricted); pw.println(mIsThermalRestricted); } @Override Loading