diff options
| author | 2015-07-29 18:02:34 +0000 | |
|---|---|---|
| committer | 2015-07-29 18:02:34 +0000 | |
| commit | c4ed81af8a12fac07c797870207e07cf7dc982c7 (patch) | |
| tree | 7d9bc4f493e4b593701d47f93aa53937f5f990b4 | |
| parent | e1d51934edf4a8605195f38bc24dac0472767545 (diff) | |
| parent | cb98228dac290b99fbce9542253befcf04fa8505 (diff) | |
am cb98228d: am deb28b77: am eda1cc50: Merge "Work on issue #22765972: Binder transactions running out of address..." into mnc-dev
* commit 'cb98228dac290b99fbce9542253befcf04fa8505':
Work on issue #22765972: Binder transactions running out of address...
| -rw-r--r-- | core/java/android/app/assist/AssistStructure.java | 4 | ||||
| -rw-r--r-- | core/java/android/content/pm/ParceledListSlice.java | 5 | ||||
| -rw-r--r-- | core/java/android/os/IBinder.java | 9 |
3 files changed, 12 insertions, 6 deletions
diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java index ee0fc9110689..e08686c860fd 100644 --- a/core/java/android/app/assist/AssistStructure.java +++ b/core/java/android/app/assist/AssistStructure.java @@ -141,10 +141,10 @@ public class AssistStructure implements Parcelable { if (DEBUG_PARCEL) Log.d(TAG, "Creating PooledStringWriter @ " + out.dataPosition()); PooledStringWriter pwriter = new PooledStringWriter(out); while (writeNextEntryToParcel(as, out, pwriter)) { - // If the parcel contains more than 100K of data, then we are getting too + // If the parcel is above the IPC limit, then we are getting too // large for a single IPC so stop here and let the caller come back when it // is ready for more. - if (out.dataSize() > 1024*1024) { + if (out.dataSize() > IBinder.MAX_IPC_SIZE) { if (DEBUG_PARCEL) Log.d(TAG, "Assist data size is " + out.dataSize() + " @ pos " + out.dataPosition() + "; returning partial result"); out.writeInt(0); diff --git a/core/java/android/content/pm/ParceledListSlice.java b/core/java/android/content/pm/ParceledListSlice.java index e5c2203a2d20..cfb447334406 100644 --- a/core/java/android/content/pm/ParceledListSlice.java +++ b/core/java/android/content/pm/ParceledListSlice.java @@ -46,8 +46,7 @@ public class ParceledListSlice<T extends Parcelable> implements Parcelable { * TODO get this number from somewhere else. For now set it to a quarter of * the 1MB limit. */ - private static final int MAX_IPC_SIZE = 256 * 1024; - private static final int MAX_FIRST_IPC_SIZE = MAX_IPC_SIZE / 2; + private static final int MAX_IPC_SIZE = IBinder.MAX_IPC_SIZE; private final List<T> mList; @@ -150,7 +149,7 @@ public class ParceledListSlice<T extends Parcelable> implements Parcelable { final Class<?> listElementClass = mList.get(0).getClass(); dest.writeParcelableCreator(mList.get(0)); int i = 0; - while (i < N && dest.dataSize() < MAX_FIRST_IPC_SIZE) { + while (i < N && dest.dataSize() < MAX_IPC_SIZE) { dest.writeInt(1); final T parcelable = mList.get(i); diff --git a/core/java/android/os/IBinder.java b/core/java/android/os/IBinder.java index 73a0f658f5f0..2c21d135e2b8 100644 --- a/core/java/android/os/IBinder.java +++ b/core/java/android/os/IBinder.java @@ -149,7 +149,14 @@ public interface IBinder { * processes. */ int FLAG_ONEWAY = 0x00000001; - + + /** + * Limit that should be placed on IPC sizes to keep them safely under the + * transaction buffer limit. + * @hide + */ + public static final int MAX_IPC_SIZE = 64 * 1024; + /** * Get the canonical name of the interface supported by this binder. */ |