summaryrefslogtreecommitdiffstats
path: root/include/binder
Commit message (Collapse)AuthorAgeFilesLines
* am 5462bc63: Fix a leak in Parcel::writeBlob.Jeff Brown2011-11-051-1/+2
|\ | | | | | | | | * commit '5462bc6318b4b70e7a58c66994e2bd79f59d9739': Fix a leak in Parcel::writeBlob.
| * Fix a leak in Parcel::writeBlob.Jeff Brown2011-11-041-1/+2
| | | | | | | | | | | | | | | | | | | | Was mistakenly assuming that Parcel::writeFileDescriptor took ownership of the fd that was passed in. It does not! Added some comments and a default parameter to allow the caller to specify whether it wishes the Parcel to take ownership. Bug: 5563374 Change-Id: I5a12f51d582bf246ce90133cce7690bb9bca93f6
* | Deprecate local-only CursorWindows.Jeff Brown2011-10-121-2/+1
|/ | | | | | | | | | | | | | | | There is no difference and has never really been a difference between local-only and remotable CursorWindows. By removing the distinction officially in the API, we will make it easier to implement CrossProcessCursor correctly. CrossProcessCursor is problematic currently because it's not clear whether a call to getWindow() will return a local-only window or a remotable window. As a result, the bulk cursor adaptor has special case handling for AbstractWindowedCursors vs. ordinary CrossProcessCursors so that it can set a remotable window before the cursor fills it. All these problems go away if we just forget about local-only windows being special in any way. Change-Id: Ie59f517968e33d0ecb239c3c4f60206495e8f376
* Use ashmem for CursorWindows.Jeff Brown2011-10-111-160/+131
| | | | | | | | | | | | | | | | | | | | | Bug: 5332296 The memory dealer introduces additional delays for reclaiming the memory owned by CursorWindows because the Binder object must be finalized. Using ashmem instead gives CursorWindow more direct control over the lifetime of the shared memory region. The provider now allocates the CursorWindows and returns them to clients with a read-only protection bit set on the ashmem region. Improved the encapsulation of CursorWindow. Callers shouldn't need to care about details like how string fields are allocated. Removed the compile-time configuration of string and numeric storage modes to remove some dead weight. Change-Id: I07c2bc2a9c573d7e435dcaecd269d25ea9807acd
* Clean up CursorWindow code.Jeff Brown2011-10-061-2/+26
| | | | | | | | | Bug: 5332296 The code is functionally equivalent, but a little more efficient and much easier to maintain. Change-Id: I90670a13799df05831843a5137ab234929281b7c
* Fix handling of "allow fds" state.Dianne Hackborn2011-10-031-1/+2
| | | | | | Didn't take into account nesting of bundles. Boo. Change-Id: Ic8cf21ad8d6f4938a3e105128624c9d162310d01
* Transfer large bitmaps using ashmem.Jeff Brown2011-10-031-3/+46
| | | | | | Bug: 5224703 Change-Id: If385a66adf4c6179a0bb49c0e6d09a9567e23808
* Add mechanism for Parcel to not allow FDs to be written to it.Dianne Hackborn2011-10-031-1/+4
| | | | | | This is to help implement issue #5224703. Change-Id: I026a5890495537d15b57fe61227a640aac806d46
* Revert "Transfer large bitmaps using ashmem. Bug: 5224703"Bart Sears2011-09-251-46/+3
| | | | | This reverts commit 56c58f66b97d22fe7e7de1f7d9548bcbe1973029 This CL was causing the browser to crash when adding bookmarks, visiting the bookmarks page, and sharing pages (see bug http://b/issue?id=5369231
* Transfer large bitmaps using ashmem.Jeff Brown2011-09-231-3/+46
| | | | | | Bug: 5224703 Change-Id: Ic7481dd9f173986f085a8bbdcc59bbe9830d7a44
* Eliminate single-process mode.Jeff Brown2011-07-081-4/+0
| | | | | | Bug: 5010576 Change-Id: Id450dc83efed4897d1e4ff451530fed14457aace
* PermissionCache caches permission checksMathias Agopian2011-06-272-68/+79
| | | | | | | | | | | | | This is intended to absorb the cost of the IPC to the permission controller. Cached permission checks cost about 3us, while full blown ones are two orders of magnitude slower. CAVEAT: PermissionCache can only handle system permissions safely for now, because the cache is not purged upon global permission changes. Change-Id: I8b8a5e71e191e3c01e8f792f253c379190eee62e
* MemoryHeapBase: Save and binderize the offsetAnu Sundararajan2011-06-272-6/+9
| | | | | | | | | | The offset that is used in the creation of the MemoryHeapBase must be saved, so that it can be used to recreate the Heap when an IMemory object is passed across process boundary through the binder. Change-Id: Ie618fb5c0718e6711f55ed9235616fd801e648dc Signed-off-by: Anu Sundararajan <sanuradha@ti.com> Signed-off-by: Iliyan Malchev <malchev@google.com>
* Parcel::appendFrom({const } Parcel *parcel, size_t, size_t)Andreas Huber2011-04-131-1/+2
| | | | | | As far as I can tell "parcel" isn't actually modified by the implementation. Change-Id: Ib806eefdc13c97b932773e1dc9ca3a4aad4422b2
* Binder linkage no longer depends on JNI objrefs as persistent tokensChristopher Tate2011-02-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | There are two areas that have changed to eliminate the assumption that local jobject references are both canonical and persistent: 1. JavaBBinderHolder no longer holds onto and reuses it parent object reference per se. Since the underlying JavaBBinder object holds a real global ref, this was redundant anyway. Now, for purposes of its transient need to perform JNI operations, it simply uses the current jobject ref(s) passed during method invocation, and no longer attempts to hold these refs beyond the scope of a single invocation. 2. Binder obituaries no longer assume that a jobject reference to a recipient will always compare == as a 32-bit value with any future reference to the same object. The implementation now asks Dalvik whether object references match. This amended patch fixes the earlier bug around races between remote binder death cleanup and local explicit unregistration of VM-side death recipients. Bug 2090115 Change-Id: I70bd788a80ea953632b1f466f385ab6b78ef2913
* Revert "Binder linkage no longer depends on JNI objrefs as persistent tokens"Christopher Tate2011-02-251-1/+1
| | | | This reverts commit c2d55dd89743c8a38deb809f3cdf1ad2d1dbac2b.
* Binder linkage no longer depends on JNI objrefs as persistent tokensChristopher Tate2011-02-241-1/+1
| | | | | | | | | | | | | | | | | | | | | There are two areas that have changed to eliminate the assumption that local jobject references are both canonical and persistent: 1. JavaBBinderHolder no longer holds onto and reuses it parent object reference per se. Since the underlying JavaBBinder object holds a real global ref, this was redundant anyway. Now, for purposes of its transient need to perform JNI operations, it simply uses the current jobject ref(s) passed during method invocation, and no longer attempts to hold these refs beyond the scope of a single invocation. 2. Binder obituaries no longer assume that a jobject reference to a recipient will always compare == as a 32-bit value with any future reference to the same object. The implementation now asks Dalvik whether object references match. Bug 2090115 Change-Id: If62edd554d0a9fbb2d2977b0cbf8ad7cc8e2e68d
* resubmitting Change-Id: I67b1d04a5c9fc18b0cd4da6184d0b814b64d89e9Vasu Nori2010-12-211-1/+0
| | | | | Change-Id: I67b1d04a5c9fc18b0cd4da6184d0b814b64d89e9 was reverted due to a bug. fixed the bug and resubmitting it here
* Revert "bug:2448371 cursorwindow size moved to resource xml file."Vasu Nori2010-12-201-0/+1
| | | | This reverts commit 2594bae1f551d758c5c88771310d1ee3dc2c71ac.
* bug:2448371 cursorwindow size moved to resource xml file.Vasu Nori2010-12-201-1/+0
| | | | | | | | | | let cursor window size be set per device in device resources file. default is 1MB. for SR, it is 2MB. it can be set to any value (in kB) in the device resource strings.xml file Change-Id: I67b1d04a5c9fc18b0cd4da6184d0b814b64d89e9
* Framework-side support for Dalvik "isSensitiveThread" hook.Brad Fitzpatrick2010-12-141-0/+1
| | | | | | | Used in lock contention stats. Bug: 3226270 Change-Id: Ie6f58d130a29079a59bdefad40b80304d9bc3623
* am ae087369: am 63070856: Merge "Don\'t propagate StrictMode over one-way ↵Brad Fitzpatrick2010-08-311-1/+5
|\ | | | | | | | | | | | | | | | | Binder calls." into gingerbread Merge commit 'ae087369c56a270c33c1c1af5be7d3c5d7f94e80' * commit 'ae087369c56a270c33c1c1af5be7d3c5d7f94e80': Don't propagate StrictMode over one-way Binder calls.
| * Don't propagate StrictMode over one-way Binder calls.Brad Fitzpatrick2010-08-311-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was causing stack stitching problems where a one-way call with violations followed by a two-way call without violations was getting the previous one-way call's violation stack stitched on to the second caller's stack. The solution is a little more indirect than I would've liked (preserving the binder's onTransact flags until enforceInterface) but was seemingly necessary to work without changing the AIDL compiler. It should also be sufficiently cheap, since no new calls to thread-local IPCThreadState lookups were required. The additional work is just same-thread getter/setters on the existing IPCThreadState. Change-Id: I4b6db1d445c56e868e6d0d7be3ba6849f4ef23ae
* | am 245cb784: am 84c924a6: Merge "Replace several IPCThreadState::get() ↵Brad Fitzpatrick2010-07-271-4/+8
|\ \ | |/ | | | | | | | | | | | | | | lookups with one." into gingerbread Merge commit '245cb7846c82f7c0840e13f0b994d356846b1678' * commit '245cb7846c82f7c0840e13f0b994d356846b1678': Replace several IPCThreadState::get() lookups with one.
| * Replace several IPCThreadState::get() lookups with one.Brad Fitzpatrick2010-07-271-4/+8
| | | | | | | | | | | | Also, make StrictMode's ThreadLocal final. Change-Id: I08d400ed254fa67bb7a3dae1227f205a54c00df0
* | am cc52121c: am c4b204bd: Merge "More StrictMode work, keeping Binder & ↵Brad Fitzpatrick2010-07-151-1/+5
|\ \ | |/ | | | | | | | | | | | | | | BlockGuard\'s thread-locals in-sync." into gingerbread Merge commit 'cc52121c4f88e9feb8404937bcbfff6e73084666' * commit 'cc52121c4f88e9feb8404937bcbfff6e73084666': More StrictMode work, keeping Binder & BlockGuard's thread-locals in-sync.
| * More StrictMode work, keeping Binder & BlockGuard's thread-locals in-sync.Brad Fitzpatrick2010-07-151-1/+5
| | | | | | | | Change-Id: Ia67cabcc17a73a0f15907ffea683d06bc41b90e5
* | am c74034b6: am 24651682: added BinderService<> template to help creating ↵Mathias Agopian2010-07-141-0/+60
|\ \ | |/ | | | | | | | | | | | | | | native binder services Merge commit 'c74034b6bf0940dc80c4d4efa1e677ad0d2dfd6c' * commit 'c74034b6bf0940dc80c4d4efa1e677ad0d2dfd6c': added BinderService<> template to help creating native binder services
| * added BinderService<> template to help creating native binder servicesMathias Agopian2010-07-141-0/+60
| | | | | | | | Change-Id: Id980899d2647b56479f8a27c89eaa949f9209dfe
* | am 706623dd: am c0a7e690: Add Parcel::readExceptionCode() and ↵Brad Fitzpatrick2010-07-131-1/+13
|\ \ | |/ | | | | | | | | | | | | | | Parcel::writeNoException() Merge commit '706623ddb8314850c0551f0b66e24b5f0bd28620' * commit '706623ddb8314850c0551f0b66e24b5f0bd28620': Add Parcel::readExceptionCode() and Parcel::writeNoException()
| * Add Parcel::readExceptionCode() and Parcel::writeNoException()Brad Fitzpatrick2010-07-131-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add native Parcel methods analogous to the Java versions. Currently, these don't do much, but upcoming StrictMode work changes the RPC calling conventions in some cases, so it's important that everybody uses these consistently, rather than having a lot of code trying to parse RPC responses out of Parcels themselves. As a summary, the current convention that Java Binder services use is to prepend the reply Parcel with an int32 signaling the exception status: 0: no exception -1: Security exception -2: Bad Parcelable -3: ... -4: ... -5: ... ... followed by Parceled String if the exception code is non-zero. With an upcoming change, it'll be the case that a response Parcel can, non-exceptionally return rich data in the header, and also return data to the caller. The important thing to note in this new case is that the first int32 in the reply parcel *will not be zero*, so anybody manually checking for it with reply.readInt32() will get false negative failures. Short summary: If you're calling into a Java service and manually checking the exception status with reply.readInt32(), change it to reply.readExceptionCode(). Change-Id: I23f9a0e53a8cfbbd9759242cfde16723641afe04
* | am efcf68aa: am ef8f96a7: Merge "Start of work on passing around StrictMode ↵Brad Fitzpatrick2010-06-232-2/+9
|\ \ | |/ | | | | | | | | | | | | | | policy over Binder calls." into gingerbread Merge commit 'efcf68aa1fd7fcfd52cf3d2837ed8db8e797194b' * commit 'efcf68aa1fd7fcfd52cf3d2837ed8db8e797194b': Start of work on passing around StrictMode policy over Binder calls.
| * Start of work on passing around StrictMode policy over Binder calls.Brad Fitzpatrick2010-06-212-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | This is (intendend to be) a no-op change. At this stage, Binder RPCs just have an additional uint32 passed around in the header, right before the interface name. But nothing is actually done with them yet. That value should right now always be 0. This now boots and seems to work. Change-Id: I135b7c84f07575e6b9717fef2424d301a450df7b
* | add API to Cursor to get column value typeVasu Nori2010-06-021-10/+10
| | | | | | | | Change-Id: I3ef1bcdb2eb1c45f68e829ccb6e3ecde28076591
* | Move CursorWindow class from core/jni to libbinderMike Lockwood2010-05-281-0/+200
|/ | | | | | | To allow use of the native CursorWindow class outside of the core framework jni Change-Id: I72e8dcb91a2c691130c33cdfd9a25d343da1c592 Signed-off-by: Mike Lockwood <lockwood@android.com>
* am 8a8658a5: Merge "Make static versions of libutils and libbinder." into froyoDan Egnor2010-05-061-1/+0
|\ | | | | | | | | | | | | Merge commit '8a8658a5de261c2da72d431940877bd054bc9837' into froyo-plus-aosp * commit '8a8658a5de261c2da72d431940877bd054bc9837': Make static versions of libutils and libbinder.
| * Make static versions of libutils and libbinder.Dan Egnor2010-05-061-1/+0
| | | | | | | | | | | | | | | | | | | | Fix some small static-initialization-order issues (and a static- initializers-missing issue) that result from doing so. The static libraries don't actually get used for anything real at the moment -- they're used for perf tests of bug 2660235. Bug: 2660235 Change-Id: Iee2f38f79cc93b395e8d0a5a144ed92461f5ada0
* | merge from open-source masterThe Android Open Source Project2010-04-211-7/+10
|\ \ | |/ |/| | | Change-Id: I08f1feae65b1dfc3f740d78654c267f2e3ae5e85
| * Allow META* macros outside of the frameworkMichael Richardson2010-04-201-7/+10
| | | | | | | | | | | | | | | | | | | | The META* macros are useful outside of the framework for other systems implementing Binder interfaces, but they depend upon the android namespace. This includes the appropriate namespace operations, which should be sane even in that android namespace. Change-Id: If600156c65191f51f487d0ee301d9f9f532b263d
* | fix [2599939] "cannot play video" after open/close a video player a dozen of ↵Mathias Agopian2010-04-193-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | times get rid off the MAP_ONCE flag is MemoryHeapBase (as well as it's functionality), this feature should not be used anymore. the software renderer was incorrectly using the default ctor which set MAP_ONCE, causing the leak. the software renderer itself is incorrectly used while coming back from sleep. Change-Id: I123621f8d140550b864f352bbcd8a5729db12b57
* | remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).Mathias Agopian2010-02-211-1/+3
| | | | | | | | | | | | | | | | | | Add a Flattenable interface to libutils which can be used to flatten an object into bytestream + filedescriptor stream. Parcel is modified to handle Flattenable. And GraphicBuffer implements Flattenable. Except for the overlay classes libui is now independent of libbinder.
* | Simplify the MemoryDealer implementationMathias Agopian2010-01-292-208/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | At some point the implementation became complicated because of SurfaceFlinger's special needs, since we are now relying on gralloc we can go back to much simpler MemoryDealer. Removed HeapInterface and AllocatorInterface, since those don't need to be paramterized anymore. Merged SimpleMemory and Allocation. Made SimplisticAllocator non virtual. Removed MemoryDealer flags (READ_ONLY, PAGE_ALIGNED) Removed a lot of unneeded code.
* | Propagate background scheduling class across processes.Dianne Hackborn2009-12-072-2/+10
|/ | | | | | | | | | | This is a very simply implementation: upon receiving an IPC, if the handling thread is at a background priority (the driver will have taken care of propagating this from the calling thread), then stick it in to the background scheduling group. Plus an API to turn this off for the process, which is used by the system process. This also pulls some of the code for managing scheduling classes out of the Process JNI wrappers and in to some convenience methods in thread.h.
* libbinder: add a NO_CACHING flag to MemoryHeapBaseIliyan Malchev2009-10-301-1/+2
| | | | | | The NO_CACHING flag translates to opening a memory region with O_SYNC. Signed-off-by: Iliyan Malchev <malchev@google.com>
* Add offset handling in MemoryHeapBase classBenny Wong2009-08-201-2/+2
|
* Support for marshalling pointers / intptr_t in Parcel.Andreas Huber2009-08-171-0/+11
| | | | Some refactoring to eliminate code duplication in Parcel implementation.
* Make MemoryDealer's destructor protected instead of public.Andreas Huber2009-07-161-2/+3
| | | | MemoryDealer, like all other subclasses of RefBase,MUST NOT BE stack-allocated, a protected destructor prohibits stack-allocation while allowing the baseclass to properly invoke the subclass' destructor once the refcount drops to 0.
* new Permission class used to improve permission checks speed (by caching ↵Mathias Agopian2009-06-152-0/+70
| | | | results)
* Merge commit 'goog/master' into merge_masterMathias Agopian2009-05-277-13/+46
|\ | | | | | | | | | | Conflicts: include/ui/Rect.h libs/ui/ISurfaceComposer.cpp
| * some work to try to reduce the code size of some native librariesMathias Agopian2009-05-267-13/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - make sure that all binder Bn classes define a ctor and dtor in their respective library. This avoids duplication of the ctor/dtor in libraries where these objects are instantiated. This is also cleaner, should we want these ctor/dtor to do something one day. - same change as above for some Bp classes and various other non-binder classes - moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere. - improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere - IBinder::getInterfaceDescriptor() now returns a "const String16&" instead of String16, which saves calls to String16 and ~String16 - implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called. The cache makes BpBinder bigger, so we need to figure out if we need this method at all.