History log of /system/libhwbinder/Binder.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
3f181281abb2553180524890d1bb0bdeb9c55166 03-May-2017 Martijn Coenen <maco@google.com> Add support for min scheduling policy to node.

The binder driver has always supported setting a
min nice value for transactions. It looks like this
was always set to an out-of-range value (0x7f);
correct this to use a value of 0 by default (which
corresponds to nice 0).

Additionally, the new driver supports setting
a minimum scheduler *policy* as well, by reserving
2 bits for the scheduler policy in the flat_binder_object
structure. Add APIs to set this policy on a server object,
and set them properly when passing the object into
the driver.

Bug: 37293077
Test: verified /d/binder output
Change-Id: I1206320c37e89efd523e342b5d56179e403eac50
/system/libhwbinder/Binder.cpp
5c6fe25870c611f1b0c36f034414037f91201b6d 18-Jan-2017 Martijn Coenen <maco@google.com> Reduce libhwbinder API surface (1/?).

Removed in this round:
- All Vector'ed read/write methods
- Reading/writing dup native_handles
- Blob/ashmem support
- Special binder transactions (ping, dump, interface)
- Various unused helpers.

Obvious remaining items that require more work:
- writeString16()/writeCString() and read variants
- writeInterface() / enforceInterface()

Test: hidl_test
Change-Id: Ica2bbbdee469f12c797d9f3feff6046b2337de6a
/system/libhwbinder/Binder.cpp
a2ce3b82c4a30cc677c536a013a62d5405062bb9 12-Jan-2017 Yifan Hong <elsk@google.com> BpRefBase -> BpHwRefBase.

Test: mma
Test: croot && make
Bug: 33554989
Change-Id: I75bacd2a6b959658615b06fcebad9d24b3666a58
/system/libhwbinder/Binder.cpp
1e118d2b86540f7a7d840ec1510337da49f1446c 12-Jan-2017 Yifan Hong <elsk@google.com> BpBinder -> BpHwBinder.

Test: mma
Test: croot && make
Bug: 33554989
Change-Id: I484c9e2e30f12ac3352aabecdf5b30fcf090a191
/system/libhwbinder/Binder.cpp
dde40f31347a51aa7249cb192f97276c30d984f5 12-Jan-2017 Yifan Hong <elsk@google.com> BBinder -> BHwBinder.

Test: mma
Test: croot && make

Bug: 33554989
Change-Id: Ia1356012d0cc1aef56884bfbd1a6af2a2504ab23
/system/libhwbinder/Binder.cpp
f75a23d54cc9e5f7b6b976e65b6ec346178f306d 01-Aug-2016 Martijn Coenen <maco@google.com> Move android::hidl to android::hardware.

Also moved Status and PersistableBundle out of their
respective 'binder' and 'os' namespaces.

Bug: 30507513
Change-Id: I8822070049a9c1b1b89753aaeb148b05b2aa851d
/system/libhwbinder/Binder.cpp
79c2f4d38c83ac8fe4c9c77e98e04f310016e7a6 20-May-2016 Martijn Coenen <maco@google.com> Callback support for libhwbinder.

One of the prime differences between HIDL and Binder
is that HIDL allows the server implementation to do
a synchronous callback into the client with response
data. This callback allows the server to respond with
data that is anywhere - on the stack, the heap or globals -
without worrying about the lifetime of the data, since
it can immediately clean up (if necessary) when the callback
returns.

So we go from a chain like this:
IPCThreadState::executeCommand() // Execute BR_TRANSACTION
BBinder::transact()
ServerStub::onTransact()
Server::some_method()
// Do work, copy data, and return to ServerStub
// serialize data, and return to BBinder
// return to IPCThreadState
IPCThreadState::sendReply()
// done

to a chain like this:
IPCThreadState::executeCommand () // Execute BR_TRANSACTION
BBinder::transact ()
ServerStub::onTransact()
Server::some_method()
// Do work, send reply
ServerStub::TransactCallback(reply)
// Serialize data (until we get scatter-gather)
BBinder::TransactCallback(serialized_reply)
IPCThreadState::sendReply(serialized_reply)
// send reply over binder, return to BBinder
// return to ServerStub
// return to Server, server can clean up
// return to ServerStub
// return to BBinder
// return to IPCThreadState
// IPCThreadState cleanup
// done

To support this, the transact() and onTransact() methods
must support a callback argument, which is added here.

On the proxy side, this callback argument for transact()
can be ignored for now; after all, once the client side gets a
reply, the data is now in the reply Parcel, and the lifetime
of that Parcel is controlled by the Proxy itself. So it
can simply wait for transact() to return, at which point
the reply Parcel is filled.

In the existing Binder model, it would then deserialize
the reply Parcel into arguments that the client had passed
in, and then the Parcel will go out of scope and gets cleaned up.

In HIDL, we deseralize, call the *client* callback, and
then the Parcel goes out of scope and gets cleaned up.

This will change when we get scatter-gather support, but
this allows us to work with the callback-model before that.

Change-Id: If59ee37f68376bc232f3ecbfbe789f7f4d522003
/system/libhwbinder/Binder.cpp
dcdc2fe124989c5c5a6d886699bde5ce6f86fa62 20-May-2016 Martijn Coenen <maco@google.com> Remove unused classes in hwbinder.

* IMemory
* IPermissionController
* IResultReceiver
* MemoryBase
* MemoryDealer
* MemoryHeapBase

Change-Id: I269a28f430175b02894e6d7f5e57b905b23f1a6c
/system/libhwbinder/Binder.cpp
e01f4f2b38beb5799dece8742eef5d70d131dbd3 12-May-2016 Martijn Coenen <maco@google.com> Move hwbinder to the android::hidl namespace.

This should prevent clashes if projects do want
to link in both libbinder and libhwbinder.

Also had to pull in Static.h from
frameworks/native/include/private/binder, as that
was not part of the history we pulled from
frameworks/native.

Change-Id: Ib7379e61229c3e68478f9c5530875292e1d51ded
/system/libhwbinder/Binder.cpp
4080edcfb5810a4a1817c03740f5f1bb19815ae1 04-May-2016 Martijn Coenen <maco@google.com> Make libhwbinder build.

- Moved Android.mk to root
- Changed module name to libhwbinder
- Updated all references to include/binder to include/hwbinder
- Removed services that we know will certainly not exist in hwbinder:
* AppOps
* BatteryStats
* MediaResourceMonitor
* ProcessInfoService
* PermissionCache
- Removed tests (we'll have new ones).

Change-Id: Ie8cc7d3a36032ad42c02b46655f0e015033d232c
/system/libhwbinder/Binder.cpp
2df29d10aae53b2c532315ff35a8a77962ec6d9c 15-Oct-2015 Dianne Hackborn <hackbod@google.com> Temporary hack to get rid of new virtuals.

Seems like it breaks some prebuilt binaries.

Change-Id: Ia5e35beb4538364b2ab3618fbf21b2e9c9ee2363
/system/libhwbinder/Binder.cpp
7ce4c3b483bf1ca7f537cfb06fbbe2ba76933a2b 08-Oct-2015 Dianne Hackborn <hackbod@google.com> Add new "shell command" feature to Binder objects.

IBinder has a new common interface for sending shell commands
to it. This can be implemented by system services to provide
a shell interface to the service, without needing to have separate
shell java code.

Also add a new "cmd" command line tool, which invokes the shell
command method on a system service. This is much like dumpsys,
but for shell commands.

Change-Id: I95dc80c881a28cefb76957ad4d4fd9b3ed9630df
/system/libhwbinder/Binder.cpp
e20d6f4a895e4493df51134985766c958027c34c 19-Aug-2015 Bailey Forrest <bcf@google.com> binder: Change from C11 <stdatomic.h> to C++11 <atomic>.

Change-Id: Ib831a9ccfcc7089940d37883d860574359c270e2
/system/libhwbinder/Binder.cpp
d29ab953df865efe141fdaf65e850b498cf63037 20-Nov-2014 Dan Albert <danalbert@google.com> C++11 compatibility.

* Explicit conversion for atomic_uintptr_t initialization.
* Fix string literal concatenation to not be a UD literal.
* Use __typeof__ instead of typeof (should become decltype once this
actually moves to C++11).

Bug: 18466763
Change-Id: I4eedddfb945a2a703ed27317cb6e2b3041b1ebfc
/system/libhwbinder/Binder.cpp
8f64ec796481c00f07deb24c0a6f39fdabcf0e11 11-Sep-2014 Hans Boehm <hboehm@google.com> Work around C11 const atomic restrictions.

Cast away the const qualifier in BBinder::findObject. C11, unlike C++11,
does not allow loads from const atomics. This is widely regarded as
a bug (see WG14 DR 459). This is a hack to work around it until it's
officially fixed in the spec.

load_const_atomic was adapted from commit
1e8587a479fd8b1ce9b594298a93f517816e8f15

I don't think we want to dignify this by putting it into a header file.

Bug:17067219
Change-Id: Icbfcbda2722e6f80d2bb065a0bb3ec7634bcacb2
/system/libhwbinder/Binder.cpp
4f2667f11dc6a1dd67b7a3ff141ecdae7bb1b30b 19-Aug-2014 Hans Boehm <hboehm@google.com> Fix CAS argument type.

Gcc apparently doesn't check; clang does.

Bug:17067219
Change-Id: I184084a5063131dbc857c63f97e70e78a05e1a76
/system/libhwbinder/Binder.cpp
99c620ac79b2407ddaaf2acdc413cceac4a859f1 13-Aug-2014 Hans Boehm <hboehm@google.com> Revert "Revert "Revert "Revert "Remove incorrect android_atomic_...64 use.""""

After fixing b/16874785.

This reverts commit f010a05c7e9a23b6083294aff4a8183ab01f686e.

Change-Id: I1645ca5d6f60595bf5d388913665ce4b8780b26d
/system/libhwbinder/Binder.cpp
0e1e368b8aa48be3179b1ff27fa6aeb5fb77883b 09-Aug-2014 Hans Boehm <hboehm@google.com> Revert "Revert "Revert "Remove incorrect android_atomic_...64 use."""

This reverts commit 66629e0de532376fa3ef43175ad05eccd21114da.

Change-Id: Ic298b345d0e500d18e4297b00e755ce3340f13fb
/system/libhwbinder/Binder.cpp
52be6ceb70c5d207ebbb4f66bd86a1cf3e97dff6 08-Aug-2014 Hans Boehm <hboehm@google.com> Revert "Revert "Remove incorrect android_atomic_...64 use.""

This reverts commit 9dc5c269f74ac76f62515e3d9558e67c6e63067d.
Adds a stdint.h include in case stdatomic.h stops including that.

Change-Id: If3dd1db1f1132c0f2dc1efb0a44617d3f36d7cfb
/system/libhwbinder/Binder.cpp
7aadd8d5d50efb4626e4627ad5de019c3a192a8e 07-Aug-2014 Hans Boehm <hboehm@google.com> Revert "Remove incorrect android_atomic_...64 use."

This reverts commit 88b7541d682a6ad402eff15e58c9c792497096d7.

Change-Id: Ie701c308451a3697bb167aff119318b932133f90
/system/libhwbinder/Binder.cpp
636e577167b621b844e840e6f3aa525977383c7c 23-Jul-2014 Hans Boehm <hboehm@google.com> Remove incorrect android_atomic_...64 use.

Change the mExtras field in Binder.h to be a stdatomic.h atomic
value, and replace references to it with proper stdatomic.h calls.
This removes one of a small number of remaining 64 bit
android_atomic references. It also replaces the erroneously
non-atomic read accesses to mExtras.

It would be better if this used the C++11 <atomic> facility,
but we don't quite have that yet.

Bug: 16513433
Change-Id: Ibabb88d05025187ee1ce6c7f1aa670b133a547f8
/system/libhwbinder/Binder.cpp
f04879896beb41f2455017ace482283bc2ef321c 06-Feb-2014 Colin Cross <ccross@android.com> binder: fix all warnings

Fix warnings related to casting pointers to ints, using %d or %ld to
print size_t/ssize_t, and unused parameters.

Change-Id: I7a13ba83d402952989c1f795cd9e880a95b98d9e
/system/libhwbinder/Binder.cpp
4ca5bafb8da8e2316464be178f32a170b494300b 05-Nov-2013 Serban Constantinescu <serban.constantinescu@arm.com> Binder: Make binder portable

Changes include
- Binder attempts to cast pointers to a int datatype
which is not sufficient on a 64-bit platform.

- This patch introduces new read/write functions into
Parcel that allow pointers to be written using the
uintptr_t datatype for compile-time data type size
selection.

- Change access specifier for the methods above.

- Binder uses the 64bit android_atomic_release_cas64
(aka cmpxchg)

Change-Id: I595280541e0ba1d19c94b2ca2127bf9d96efabf1
Signed-off-by: Matthew Leach <matthew.leach@arm.com>
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
/system/libhwbinder/Binder.cpp
86a50a691c3e60a47a4b69e8fb7db1c3ae83d205 09-May-2012 Dianne Hackborn <hackbod@google.com> Add callback hack to find out when to reload system properties.

Every IBinder object can accept a new transaction to tell it that
it might want to reload system properties, and in the process
anyone can register a callback to be executed when this happens.

Use this to reload the trace property.

This is very much ONLY for debugging.

Change-Id: I55c67c46f8f3fa9073bef0dfaab4577ed1d47eb4
/system/libhwbinder/Binder.cpp
d8e1916f8b99dbe958d7cf285f0e87589531c1d8 06-Jan-2012 Steve Block <steveblock@google.com> Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE

See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
/system/libhwbinder/Binder.cpp
87957f7b91fbf83dbb417e5f0bab9ee54818fdd0 06-May-2010 Dan Egnor <egnor@google.com> Make static versions of libutils and libbinder.

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
/system/libhwbinder/Binder.cpp
a6286c36406f6bb21b53d92dc165c603365b358b 23-May-2009 Mathias Agopian <mathias@google.com> some work to try to reduce the code size of some native libraries

- 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.
/system/libhwbinder/Binder.cpp
164757037f944dae1eb5f76176570b2e43a37b55 20-May-2009 Mathias Agopian <mathias@google.com> move libbinder's header files under includes/binder
/system/libhwbinder/Binder.cpp
7922fa29f3a18386b6eb4cb19e8c582d9f751345 19-May-2009 Mathias Agopian <mathias@google.com> checkpoint: split libutils into libutils + libbinder
/system/libhwbinder/Binder.cpp