diff options
author | Tri Vo <trong@google.com> | 2019-10-09 22:54:16 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-10-09 22:54:16 +0000 |
commit | 89e09c3918251c0c58e6879ace5eb26143c5bb67 (patch) | |
tree | c8dc9801b43a47bfe81b2f8918dbecde73eaf7c4 | |
parent | 7ae1299cdd639ac3fc7de1b81e723a0c718f6413 (diff) | |
parent | b9ad9a68fb955fbe2059e635b95e22294c1caf2b (diff) | |
download | base-89e09c3918251c0c58e6879ace5eb26143c5bb67.tar.gz |
Merge "KernelWakelockReader: reuse buffer when parsing"
-rw-r--r-- | core/java/com/android/internal/os/KernelWakelockReader.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/core/java/com/android/internal/os/KernelWakelockReader.java b/core/java/com/android/internal/os/KernelWakelockReader.java index e09e0e609380..cffb0ad9fdb9 100644 --- a/core/java/com/android/internal/os/KernelWakelockReader.java +++ b/core/java/com/android/internal/os/KernelWakelockReader.java @@ -29,6 +29,7 @@ import com.android.internal.annotations.VisibleForTesting; import java.io.File; import java.io.FileInputStream; +import java.util.Arrays; import java.util.Iterator; /** @@ -66,6 +67,7 @@ public class KernelWakelockReader { private final String[] mProcWakelocksName = new String[3]; private final long[] mProcWakelocksData = new long[3]; private ISuspendControlService mSuspendControlService = null; + private byte[] mKernelWakelockBuffer = new byte[32 * 1024]; /** * Reads kernel wakelock stats and updates the staleStats with the new information. @@ -84,7 +86,7 @@ public class KernelWakelockReader { } return removeOldStats(staleStats); } else { - byte[] buffer = new byte[32*1024]; + Arrays.fill(mKernelWakelockBuffer, (byte) 0); int len = 0; boolean wakeup_sources; final long startTime = SystemClock.uptimeMillis(); @@ -107,7 +109,8 @@ public class KernelWakelockReader { } int cnt; - while ((cnt = is.read(buffer, len, buffer.length - len)) > 0) { + while ((cnt = is.read(mKernelWakelockBuffer, len, + mKernelWakelockBuffer.length - len)) > 0) { len += cnt; } @@ -125,12 +128,13 @@ public class KernelWakelockReader { } if (len > 0) { - if (len >= buffer.length) { - Slog.wtf(TAG, "Kernel wake locks exceeded buffer size " + buffer.length); + if (len >= mKernelWakelockBuffer.length) { + Slog.wtf(TAG, "Kernel wake locks exceeded mKernelWakelockBuffer size " + + mKernelWakelockBuffer.length); } int i; for (i=0; i<len; i++) { - if (buffer[i] == '\0') { + if (mKernelWakelockBuffer[i] == '\0') { len = i; break; } @@ -143,7 +147,7 @@ public class KernelWakelockReader { Slog.w(TAG, "Failed to get Native wakelock stats from SystemSuspend"); } // Get kernel wakelock stats - parseProcWakelocks(buffer, len, wakeup_sources, staleStats); + parseProcWakelocks(mKernelWakelockBuffer, len, wakeup_sources, staleStats); return removeOldStats(staleStats); } } |