diff options
author | Mukesh Agrawal <quiche@google.com> | 2016-03-03 03:09:01 +0000 |
---|---|---|
committer | Android Partner Code Review <android-gerrit-partner@google.com> | 2016-03-03 03:09:01 +0000 |
commit | 84f44236019a1ae41739984c12eccdd14ca97e3f (patch) | |
tree | 442549e9aa7545987fcdd9660352d33dfeb0dee9 /service | |
parent | 00ed767aee2b1eaef10b849a27f1ce6bda43f83f (diff) | |
parent | b46c550a7305e6c42af4ca92a964b801c33f1f72 (diff) |
Merge "WifiLogger: manage ring buffers by bytes" into mm-wireless-dev
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/WifiLogger.java | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/service/java/com/android/server/wifi/WifiLogger.java b/service/java/com/android/server/wifi/WifiLogger.java index 98a3c5172..fde3e05bc 100644 --- a/service/java/com/android/server/wifi/WifiLogger.java +++ b/service/java/com/android/server/wifi/WifiLogger.java @@ -19,6 +19,9 @@ package com.android.server.wifi; import android.util.Base64; import android.util.Log; +import com.android.internal.annotations.VisibleForTesting; +import com.android.server.wifi.util.ByteArrayRingBuffer; + import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.FileDescriptor; @@ -64,8 +67,7 @@ class WifiLogger extends BaseWifiLogger { public static final int REPORT_REASON_SCAN_FAILURE = 6; public static final int REPORT_REASON_USER_ACTION = 7; - /** number of ring buffer entries to cache */ - public static final int MAX_RING_BUFFERS = 10; + public static final int MAX_RING_BUFFER_SIZE_BYTES = 32 * 1024; /** number of bug reports to hold */ public static final int MAX_BUG_REPORTS = 4; @@ -184,7 +186,7 @@ class WifiLogger extends BaseWifiLogger { } /* private methods and data */ - private static class BugReport { + class BugReport { long systemTimeMs; long kernelTimeNanos; int errorCode; @@ -260,7 +262,7 @@ class WifiLogger extends BaseWifiLogger { } } - private static class LimitedCircularArray<E> { + class LimitedCircularArray<E> { private ArrayList<E> mArrayList; private int mMax; LimitedCircularArray(int max) { @@ -287,7 +289,7 @@ class WifiLogger extends BaseWifiLogger { new LimitedCircularArray<BugReport>(MAX_ALERT_REPORTS); private final LimitedCircularArray<BugReport> mLastBugReports = new LimitedCircularArray<BugReport>(MAX_BUG_REPORTS); - private final HashMap<String, LimitedCircularArray<byte[]>> mRingBufferData = new HashMap(); + private final HashMap<String, ByteArrayRingBuffer> mRingBufferData = new HashMap(); private final WifiNative.WifiLoggerEventHandler mHandler = new WifiNative.WifiLoggerEventHandler() { @@ -303,9 +305,9 @@ class WifiLogger extends BaseWifiLogger { }; synchronized void onRingBufferData(WifiNative.RingBufferStatus status, byte[] buffer) { - LimitedCircularArray<byte[]> ring = mRingBufferData.get(status.name); + ByteArrayRingBuffer ring = mRingBufferData.get(status.name); if (ring != null) { - ring.addLast(buffer); + ring.appendBuffer(buffer); } } @@ -325,7 +327,7 @@ class WifiLogger extends BaseWifiLogger { if (DBG) Log.d(TAG, "RingBufferStatus is: \n" + buffer.name); if (mRingBufferData.containsKey(buffer.name) == false) { mRingBufferData.put(buffer.name, - new LimitedCircularArray<byte[]>(MAX_RING_BUFFERS)); + new ByteArrayRingBuffer(MAX_RING_BUFFER_SIZE_BYTES)); } if ((buffer.flag & RING_BUFFER_FLAG_HAS_PER_PACKET_ENTRIES) != 0) { mPerPacketRingBuffer = buffer; @@ -417,10 +419,10 @@ class WifiLogger extends BaseWifiLogger { for (WifiNative.RingBufferStatus buffer : mRingBuffers) { /* this will push data in mRingBuffers */ mWifiNative.getRingBufferData(buffer.name); - LimitedCircularArray<byte[]> data = mRingBufferData.get(buffer.name); - byte[][] buffers = new byte[data.size()][]; - for (int i = 0; i < data.size(); i++) { - buffers[i] = data.get(i).clone(); + ByteArrayRingBuffer data = mRingBufferData.get(buffer.name); + byte[][] buffers = new byte[data.getNumBuffers()][]; + for (int i = 0; i < data.getNumBuffers(); i++) { + buffers[i] = data.getBuffer(i).clone(); } report.ringBuffers.put(buffer.name, buffers); } @@ -435,6 +437,11 @@ class WifiLogger extends BaseWifiLogger { return report; } + @VisibleForTesting + LimitedCircularArray<BugReport> getBugReports() { + return mLastBugReports; + } + private static String compressToBase64(byte[] input) { String result; //compress |