47 lines
1.5 KiB
Plaintext
47 lines
1.5 KiB
Plaintext
GLib-style interface to binder (Android IPC mechanism)
|
|
|
|
Key features:
|
|
|
|
1. Integration with GLib event loop
|
|
2. Detection of 32 vs 64 bit kernel at runtime
|
|
3. Asynchronous transactions that don't block the event thread
|
|
4. Stable service manager and low-level transaction APIs
|
|
|
|
Android keeps changing both low-level RPC and service manager
|
|
protocols from version to version. To counter that, libgbinder
|
|
implements configirable backends for different variants of those,
|
|
and yet keeping its own API unchanged.
|
|
|
|
Configuration is loaded from [Protocol] and [ServiceManager] sections
|
|
of /etc/gbinder.conf file. The keys are binder device names or the
|
|
special Default value, the value is the identifier of the protocol
|
|
or service manager variant, respectively.
|
|
|
|
In addition to reading /etc/gbinder.conf if it exists, /etc/gbinder.d
|
|
directory is scanned for .conf files, the file list is sorted, files are
|
|
loaded one by one, overwriting the entries loaded from /etc/gbinder.conf
|
|
or from the previously processed file.
|
|
|
|
Known protocol and service manager variants are aidl, aidl2, aidl3 and
|
|
hidl. This list is expected to expand further in the future. The default
|
|
configuration is as follows:
|
|
|
|
[Protocol]
|
|
Default = aidl
|
|
/dev/binder = aidl
|
|
/dev/hwbinder = hidl
|
|
|
|
[ServiceManager]
|
|
Default = aidl
|
|
/dev/binder = aidl
|
|
/dev/hwbinder = hidl
|
|
|
|
Alternatively and preferably, one can specify the desired Android API
|
|
level:
|
|
|
|
[General]
|
|
ApiLevel = 29
|
|
|
|
and let libgbinder pick the appropriate preset. Full list of presets can
|
|
be found in src/gbinder_config.c
|