Skip to main content

Crate binder_ndk_sys

Crate binder_ndk_sys 

Source

Structs§

ABinderRpc_Accessor
ABinderRpc_AccessorProvider
ABinderRpc_ConnectionInfo
AIBinder
Represents a local or remote object which can be used for IPC or which can itself be sent.
AIBinder_Class
Represents a type of AIBinder object which can be sent out.
AIBinder_DeathRecipient
Represents a handle on a death notification. See AIBinder_linkToDeath/AIBinder_unlinkToDeath.
AIBinder_Weak
The AIBinder object associated with this can be retrieved if it is still alive so that it can be re-used. The intention of this is to enable the same AIBinder object to always represent the same object.
AParcel
This object represents a package of data that can be sent between processes. When transacting, an instance of it is automatically created to be used for the transaction. When two processes use binder to communicate, they must agree on a format of this parcel to be used in order to transfer data. This is usually done in an IDL (see AIDL, specificially).
APersistableBundle
AServiceManager_NotificationRegistration
Represents a registration to servicemanager which can be cleared anytime.
AStatus
This is a helper class that encapsulates a standard way to keep track of and chain binder errors along with service specific errors.
cmsghdr
iovec
mbstate_t
mmsghdr
msghdr
timespec

Enums§

AServiceManager_AddServiceFlag
AServiceManager_PermissionType
These are the different SELinux permissions that processes need to have for different operations with servicemanager.
android_c_interface_ExceptionCode
android_c_interface_StatusCode

Constants§

APERSISTABLEBUNDLE_ALLOCATOR_FAILED
APERSISTABLEBUNDLE_KEY_NOT_FOUND
FIRST_CALL_TRANSACTION
FLAG_CLEAR_BUF
FLAG_ONEWAY
FLAG_PRIVATE_LOCAL
LAST_CALL_TRANSACTION

Functions§

ABinderProcess_disableBackgroundScheduling⚠
Disables (or enables) background scheduling.
ABinderProcess_handlePolledCommands⚠
This will handle all queued binder commands in this process and then return. It is expected to be called whenever there is data on the fd.
ABinderProcess_isThreadPoolStarted⚠
Check if the threadpool has already been started. This tells whether someone in the process has called ABinderProcess_startThreadPool. Usually, you should use this in a library to abort if the threadpool is not started. Programs should configure binder threadpools once at the beginning.
ABinderProcess_joinThreadPool⚠
This adds the current thread to the threadpool. This thread will be in addition to the thread configured with ABinderProcess_setThreadPoolMaxThreadCount and started with ABinderProcess_startThreadPool.
ABinderProcess_setThreadPoolMaxThreadCount⚠
This sets the maximum number of threads that can be started in the threadpool. By default, after startThreadPool is called, this is 15. If it is called additional times, it will only prevent the kernel from starting new threads and will not delete already existing threads. This should be called once before startThreadPool. The number of threads can never decrease.
ABinderProcess_setupPolling⚠
This gives you an fd to wait on. Whenever data is available on the fd, ABinderProcess_handlePolledCommands can be called to handle binder queries. This is expected to be used in a single threaded process which waits on events from multiple different fds.
ABinderProcess_startThreadPool⚠
This creates a threadpool for incoming binder transactions if it has not already been created, spawning one thread, and allowing the kernel to lazily start threads according to the count that is specified in ABinderProcess_setThreadPoolMaxThreadCount.
ABinderRpc_Accessor_asBinder⚠
Return the AIBinder associated with an ABinderRpc_Accessor. This can be used to send the Accessor to another process or even register it with servicemanager.
ABinderRpc_Accessor_delegateAccessor⚠
Wrap an ABinderRpc_Accessor proxy binder with a delegator binder.
ABinderRpc_Accessor_delete⚠
Delete an ABinderRpc_Accessor
ABinderRpc_Accessor_fromBinder⚠
Return the ABinderRpc_Accessor associated with an AIBinder. The instance must match the ABinderRpc_Accessor implementation. This can be used when receiving an AIBinder from another process that the other process obtained from ABinderRpc_Accessor_asBinder.
ABinderRpc_Accessor_new⚠
Create a new ABinderRpc_Accessor. This creates an IAccessor object in libbinder that can use the info from the ABinderRpc_ConnectionInfoProvider to connect to a socket that the service with instance name is listening to.
ABinderRpc_ConnectionInfo_delete⚠
Delete an ABinderRpc_ConnectionInfo object that was created with ABinderRpc_ConnectionInfo_new.
ABinderRpc_ConnectionInfo_new⚠
Create a new ABinderRpc_ConnectionInfo with sockaddr. This can be supported socket types like sockaddr_vm (vsock) and sockaddr_un (Unix Domain Sockets).
ABinderRpc_registerAccessorProvider⚠
Inject an ABinderRpc_AccessorProvider_getAccessorCallback into the process for the Service Manager APIs to use to retrieve ABinderRpc_Accessor objects associated with different RPC Binder services.
ABinderRpc_unregisterAccessorProvider⚠
Remove an ABinderRpc_AccessorProvider from libbinder. This will remove references from the ABinderRpc_AccessorProvider and will no longer call the ABinderRpc_AccessorProvider_getAccessorCallback.
AIBinder_Class_define⚠
This creates a new instance of a class of binders which can be instantiated. This is called one time during library initialization and cleaned up when the process exits or execs.
AIBinder_Class_disableInterfaceTokenHeader⚠
This tells users of this class not to use a transaction header. By default, libbinder_ndk users read/write transaction headers implicitly (in the SDK, this must be manually written by android.os.Parcel#writeInterfaceToken, and it is read/checked with android.os.Parcel#enforceInterface). This method is provided in order to talk to legacy code which does not write an interface token. When this is disabled, type safety is reduced, so you must have a separate way of determining the binder you are talking to is the right type. Must be called before any instance of the class is created.
AIBinder_Class_getDescriptor⚠
Retrieve the class descriptor for the class.
AIBinder_Class_getFunctionName⚠
Get function name associated with transaction code for given class
AIBinder_Class_setHandleShellCommand⚠
This sets the implementation of handleShellCommand for a class.
AIBinder_Class_setOnDump⚠
This sets the implementation of the dump method for a class.
AIBinder_Class_setTransactionCodeToFunctionNameMap⚠
Associates a mapping of transaction codes(transaction_code_t) to function names for the given class.
AIBinder_DeathRecipient_delete⚠
Deletes a binder death recipient. It is not necessary to call AIBinder_unlinkToDeath before calling this as these will all be automatically unlinked.
AIBinder_DeathRecipient_new⚠
Creates a new binder death recipient. This can be attached to multiple different binder objects.
AIBinder_DeathRecipient_setOnUnlinked⚠
Set the callback to be called when this DeathRecipient is unlinked from a binder. The callback is called in the following situations:
AIBinder_Weak_clone⚠
Clone an AIBinder_Weak. Useful because even if a weak binder promotes to a null value, after further binder transactions, it may no longer promote to a null value.
AIBinder_Weak_delete⚠
Deletes the weak reference. This will have no impact on the lifetime of the binder.
AIBinder_Weak_lt⚠
Whether AIBinder_Weak is less than another.
AIBinder_Weak_new⚠
This does not take any ownership of the input binder, but it can be used to retrieve it if something else in some process still holds a reference to it.
AIBinder_Weak_promote⚠
If promotion succeeds, result will have one strong refcount added to it. Otherwise, this returns null.
AIBinder_associateClass⚠
This sets the class of an AIBinder object. This checks to make sure the remote object is of the expected class. A class must be set in order to use transactions on an AIBinder object. However, if an object is just intended to be passed through to another process or used as a handle this need not be called.
AIBinder_debugGetRefCount⚠
For debugging only!
AIBinder_decStrong⚠
This will delete the object and call onDestroy once the refcount reaches zero.
AIBinder_dump⚠
Built-in transaction for all binder objects. This dumps information about a given binder.
AIBinder_forceDowngradeToSystemStability⚠
Given a binder interface at a certain stability, there may be some requirements associated with that higher stability level. For instance, a VINTF stability binder is required to be in the VINTF manifest. This API can be called to use that same interface within the system partition.
AIBinder_getCallingPid⚠
This returns the calling PID assuming that this thread is called from a thread that is processing a binder transaction (for instance, in the implementation of AIBinder_Class_onTransact).
AIBinder_getCallingSid⚠
Returns the selinux context of the callee.
AIBinder_getCallingUid⚠
This returns the calling UID assuming that this thread is called from a thread that is processing a binder transaction (for instance, in the implementation of AIBinder_Class_onTransact).
AIBinder_getClass⚠
Returns the class that this binder was constructed with or associated with.
AIBinder_getExtension⚠
Gets the extension registered with AIBinder_setExtension.
AIBinder_getUserData⚠
Value returned by onCreate for a local binder. For stateless classes (if onCreate returns null), this also returns null. For a remote binder, this will always return null.
AIBinder_incStrong⚠
This can only be called if a strong reference to this object already exists in process.
AIBinder_isAlive⚠
If this binder is known to be alive. This will not send a transaction to a remote process and returns a result based on the last known information. That is, whenever a transaction is made, this is automatically updated to reflect the current alive status of this binder. This will be updated as the result of a transaction made using AIBinder_transact, but it will also be updated based on the results of bookkeeping or other transactions made internally.
AIBinder_isHandlingTransaction⚠
Determine whether the current thread is currently executing an incoming transaction.
AIBinder_isRemote⚠
If this is hosted in a process other than the current one.
AIBinder_linkToDeath⚠
Registers for notifications that the associated binder is dead. The same death recipient may be associated with multiple different binders. If the binder is local, then no death recipient will be given (since if the local process dies, then no recipient will exist to receive a transaction). The cookie is passed to recipient in the case that this binder dies and can be null. The exact cookie must also be used to unlink this transaction (see AIBinder_unlinkToDeath). This function may return a binder transaction failure. The cookie can be used both for identification and holding user data.
AIBinder_lt⚠
Whether AIBinder is less than another.
AIBinder_markSystemStability⚠
This interface has the stability of the system image.
AIBinder_markVintfStability⚠
AIBinder_new⚠
Creates a new binder object of the appropriate class.
AIBinder_ping⚠
Built-in transaction for all binder objects. This sends a transaction that will immediately return. Usually this is used to make sure that a binder is alive, as a placeholder call, or as a consistency check.
AIBinder_prepareTransaction⚠
Creates a parcel to start filling out for a transaction. This will add a header to the transaction that corresponds to android.os.Parcel#writeInterfaceToken. This may add debugging or other information to the transaction for platform use or to enable other features to work. The contents of this header is a platform implementation detail, and it is required to use libbinder_ndk. This parcel is to be sent via AIBinder_transact and it represents the input data to the transaction. It is recommended to check if the object is local and call directly into its user data before calling this as the parceling and unparceling cost can be avoided. This AIBinder must be either built with a class or associated with a class before using this API.
AIBinder_setExtension⚠
Gets the extension of a binder interface. This allows a downstream developer to add an extension to an interface without modifying its interface file. This should be called immediately when the object is created before it is passed to another thread. No thread safety is required.
AIBinder_setInheritRt⚠
Allow the binder to inherit realtime scheduling policies from its caller.
AIBinder_setMinRpcThreads⚠
Set the minimum number of RPC threads required to service this binder.
AIBinder_setMinSchedulerPolicy⚠
Sets a minimum scheduler policy for all transactions coming into this AIBinder.
AIBinder_setRequestingSid⚠
Makes calls to AIBinder_getCallingSid work if the kernel supports it. This must be called on a local binder server before it is sent out to any othe process. If this is a remote binder, it will abort. If the kernel doesn’t support this feature, you’ll always get null from AIBinder_getCallingSid.
AIBinder_transact⚠
Transact using a parcel created from AIBinder_prepareTransaction. This actually communicates with the object representing this binder object. This also passes out a parcel to be used for the return transaction. This takes ownership of the in parcel and automatically deletes it after it is sent to the remote process. The output parcel is the result of the transaction. If the transaction has FLAG_ONEWAY, the out parcel will be empty. Otherwise, this will block until the remote process has processed the transaction, and the out parcel will contain the output data from transaction.
AIBinder_unlinkToDeath⚠
Stops registration for the associated binder dying. Does not delete the recipient. This function may return a binder transaction failure and in case the death recipient cannot be found, it returns STATUS_NAME_NOT_FOUND.
AParcel_appendFrom⚠
Copy the data of a parcel to other parcel.
AParcel_create⚠
Creates a parcel.
AParcel_delete⚠
Cleans up a parcel.
AParcel_getAllowFds⚠
Gets whether or not FDs are allowed by this AParcel
AParcel_getDataPosition⚠
Gets the current position within the parcel.
AParcel_getDataSize⚠
Gets the size of the parcel.
AParcel_markSensitive⚠
Data written to the parcel will be zero’d before being deleted or realloced.
AParcel_marshal⚠
Marshals the raw bytes of the Parcel to a buffer.
AParcel_readBool⚠
Reads into bool value from the next location in a non-null parcel.
AParcel_readBoolArray⚠
Reads an array of bool from the next location in a non-null parcel.
AParcel_readByte⚠
Reads into int8_t value from the next location in a non-null parcel.
AParcel_readByteArray⚠
Reads an array of int8_t from the next location in a non-null parcel.
AParcel_readChar⚠
Reads into char16_t value from the next location in a non-null parcel.
AParcel_readCharArray⚠
Reads an array of char16_t from the next location in a non-null parcel.
AParcel_readDouble⚠
Reads into double value from the next location in a non-null parcel.
AParcel_readDoubleArray⚠
Reads an array of double from the next location in a non-null parcel.
AParcel_readFloat⚠
Reads into float value from the next location in a non-null parcel.
AParcel_readFloatArray⚠
Reads an array of float from the next location in a non-null parcel.
AParcel_readInt32⚠
Reads into int32_t value from the next location in a non-null parcel.
AParcel_readInt64⚠
Reads into int64_t value from the next location in a non-null parcel.
AParcel_readInt32Array⚠
Reads an array of int32_t from the next location in a non-null parcel.
AParcel_readInt64Array⚠
Reads an array of int64_t from the next location in a non-null parcel.
AParcel_readParcelFileDescriptor⚠
Reads an int from the next location in a non-null parcel.
AParcel_readParcelableArray⚠
Reads an array of parcelables (user-defined types) from the next location in a non-null parcel.
AParcel_readStatusHeader⚠
Reads an AStatus from the next location in a non-null parcel. Ownership is passed to the caller of this function.
AParcel_readString⚠
Reads and allocates utf-8 string value from the next location in a non-null parcel.
AParcel_readStringArray⚠
Reads and allocates utf-8 string array value from the next location in a non-null parcel.
AParcel_readStrongBinder⚠
Reads an AIBinder from the next location in a non-null parcel. One strong ref-count of ownership is passed to the caller of this function.
AParcel_readUint32⚠
Reads into uint32_t value from the next location in a non-null parcel.
AParcel_readUint64⚠
Reads into uint64_t value from the next location in a non-null parcel.
AParcel_readUint32Array⚠
Reads an array of uint32_t from the next location in a non-null parcel.
AParcel_readUint64Array⚠
Reads an array of uint64_t from the next location in a non-null parcel.
AParcel_reset⚠
Reset the parcel to the initial status.
AParcel_setDataPosition⚠
Sets the position within the parcel.
AParcel_unmarshal⚠
Set the data in the parcel to the raw bytes from the buffer.
AParcel_writeBool⚠
Writes bool value to the next location in a non-null parcel.
AParcel_writeBoolArray⚠
Writes an array of bool to the next location in a non-null parcel.
AParcel_writeByte⚠
Writes int8_t value to the next location in a non-null parcel.
AParcel_writeByteArray⚠
Writes an array of int8_t to the next location in a non-null parcel.
AParcel_writeChar⚠
Writes char16_t value to the next location in a non-null parcel.
AParcel_writeCharArray⚠
Writes an array of char16_t to the next location in a non-null parcel.
AParcel_writeDouble⚠
Writes double value to the next location in a non-null parcel.
AParcel_writeDoubleArray⚠
Writes an array of double to the next location in a non-null parcel.
AParcel_writeFloat⚠
Writes float value to the next location in a non-null parcel.
AParcel_writeFloatArray⚠
Writes an array of float to the next location in a non-null parcel.
AParcel_writeInt32⚠
Writes int32_t value to the next location in a non-null parcel.
AParcel_writeInt64⚠
Writes int64_t value to the next location in a non-null parcel.
AParcel_writeInt32Array⚠
Writes an array of int32_t to the next location in a non-null parcel.
AParcel_writeInt64Array⚠
Writes an array of int64_t to the next location in a non-null parcel.
AParcel_writeParcelFileDescriptor⚠
Writes a file descriptor to the next location in a non-null parcel. This does not take ownership of fd.
AParcel_writeParcelableArray⚠
Writes an array of parcelables (user-defined types) to the next location in a non-null parcel.
AParcel_writeStatusHeader⚠
Writes an AStatus object to the next location in a non-null parcel.
AParcel_writeString⚠
Writes utf-8 string value to the next location in a non-null parcel.
AParcel_writeStringArray⚠
Writes utf-8 string array data to the next location in a non-null parcel.
AParcel_writeStrongBinder⚠
Writes an AIBinder to the next location in a non-null parcel. Can be null. This does not take any refcounts of ownership of the binder from the client.
AParcel_writeUint32⚠
Writes uint32_t value to the next location in a non-null parcel.
AParcel_writeUint64⚠
Writes uint64_t value to the next location in a non-null parcel.
AParcel_writeUint32Array⚠
Writes an array of uint32_t to the next location in a non-null parcel.
AParcel_writeUint64Array⚠
Writes an array of uint64_t to the next location in a non-null parcel.
APersistableBundle_delete⚠
Delete an APersistableBundle. This must always be called when finished using the object.
APersistableBundle_dup⚠
Create a new APersistableBundle based off an existing APersistableBundle. This is a deep copy, so the new APersistableBundle has its own values from copying the original underlying PersistableBundle.
APersistableBundle_erase⚠
Erase any entries added with the provided key.
APersistableBundle_getBoolean⚠
Get a boolean associated with the provided key.
APersistableBundle_getBooleanKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getBooleanVector⚠
Get a boolean vector associated with the provided key and place it in the provided pre-allocated buffer from the user.
APersistableBundle_getBooleanVectorKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getDouble⚠
Get a double associated with the provided key.
APersistableBundle_getDoubleKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getDoubleVector⚠
Get a double vector associated with the provided key and place it in the provided pre-allocated buffer from the user.
APersistableBundle_getDoubleVectorKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getInt⚠
Get an int32_t associated with the provided key.
APersistableBundle_getIntKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getIntVector⚠
Get an int32_t vector associated with the provided key and place it in the provided pre-allocated buffer from the user.
APersistableBundle_getIntVectorKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getLong⚠
Get an int64_t associated with the provided key.
APersistableBundle_getLongKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getLongVector⚠
Get an int64_t vector associated with the provided key and place it in the provided pre-allocated buffer from the user.
APersistableBundle_getLongVectorKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getPersistableBundle⚠
Get an APersistableBundle* associated with the provided key.
APersistableBundle_getPersistableBundleKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data in bytes.
APersistableBundle_getString⚠
Get a string associated with the provided key. The caller is responsible for freeing the returned data.
APersistableBundle_getStringKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getStringVector⚠
Get a string vector associated with the provided key and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_getStringVectorKeys⚠
Get all of the keys associated with this specific type and place it in the provided pre-allocated buffer from the user. The user must provide an APersistableBundle_stringAllocator for the individual strings to be allocated. The caller is responsible for freeing the returned data.
APersistableBundle_isEqual⚠
Check for equality of APersistableBundles.
APersistableBundle_new⚠
Create a new APersistableBundle.
APersistableBundle_putBoolean⚠
Put a boolean associated with the provided key. New values with the same key will overwrite existing values.
APersistableBundle_putBooleanVector⚠
Put a boolean vector associated with the provided key. New values with the same key will overwrite existing values. The values are copied.
APersistableBundle_putDouble⚠
Put a double associated with the provided key. New values with the same key will overwrite existing values.
APersistableBundle_putDoubleVector⚠
Put a double vector associated with the provided key. New values with the same key will overwrite existing values. The values are copied.
APersistableBundle_putInt⚠
Put an int32_t associated with the provided key. New values with the same key will overwrite existing values.
APersistableBundle_putIntVector⚠
Put an int32_t vector associated with the provided key. New values with the same key will overwrite existing values. The values are copied.
APersistableBundle_putLong⚠
Put an int64_t associated with the provided key. New values with the same key will overwrite existing values.
APersistableBundle_putLongVector⚠
Put an int64_t vector associated with the provided key. New values with the same key will overwrite existing values. The values are copied.
APersistableBundle_putPersistableBundle⚠
Put an APersistableBundle associated with the provided key. New values with the same key will overwrite existing values. The value is deep-copied.
APersistableBundle_putString⚠
Put a string associated with the provided key. New values with the same key will overwrite existing values. The value is copied.
APersistableBundle_putStringVector⚠
Put a string vector associated with the provided key. New values with the same key will overwrite existing values. The values are copied.
APersistableBundle_readFromParcel⚠
Read an APersistableBundle from an AParcel.
APersistableBundle_size⚠
Get the size of an APersistableBundle. This is the number of mappings in the object.
APersistableBundle_writeToParcel⚠
Write an APersistableBundle to an AParcel.
AServiceManager_NotificationRegistration_delete⚠
Unregister for notifications and delete the object.
AServiceManager_addService⚠
This registers the service with the default service manager under this instance name. This does not take ownership of binder.
AServiceManager_addServiceWithFlags⚠
This registers the service with the default service manager under this instance name. This does not take ownership of binder.
AServiceManager_checkService⚠
Gets a binder object with this specific instance name. Will return nullptr immediately if the service is not available This also implicitly calls AIBinder_incStrong (so the caller of this function is responsible for calling AIBinder_decStrong).
AServiceManager_checkServiceAccess⚠
Check if this ‘callerSid’ has access for the ‘permission’ for a given service ‘name’.
AServiceManager_forEachDeclaredInstance⚠
Returns all declared instances for a particular interface.
AServiceManager_forceLazyServicesPersist⚠
Prevent lazy services without client from shutting down their process
AServiceManager_getService⚠
Gets a binder object with this specific instance name. Blocks for a couple of seconds waiting on it. This also implicitly calls AIBinder_incStrong (so the caller of this function is responsible for calling AIBinder_decStrong). This does polling. A more efficient way to make sure you unblock as soon as the service is available is to use AIBinder_waitForService.
AServiceManager_getUpdatableApexName⚠
Returns the APEX name if a service is declared as updatable via an APEX module.
AServiceManager_isDeclared⚠
Check if a service is declared (e.g. VINTF manifest).
AServiceManager_isUpdatableViaApex⚠
Check if a service is updatable via an APEX module.
AServiceManager_openDeclaredPassthroughHal⚠
Opens a declared passthrough HAL.
AServiceManager_reRegister⚠
Re-register services that were unregistered by ‘tryUnregister’. This method should be called in the case ‘tryUnregister’ fails (and should be called on the same thread).
AServiceManager_registerForServiceNotifications⚠
Get notifications when a service is registered. If the service is already registered, you will immediately get a notification.
AServiceManager_registerLazyService⚠
Registers a lazy service with the default service manager under the ‘instance’ name. Does not take ownership of binder. The service must be configured statically with init so it can be restarted with ctl.interface.* messages from servicemanager. AServiceManager_registerLazyService cannot safely be used with AServiceManager_addService in the same process. If one service is registered with AServiceManager_registerLazyService, the entire process will have its lifetime controlled by servicemanager. Instead, all services in the process should be registered using AServiceManager_registerLazyService.
AServiceManager_setActiveServicesCallback⚠
Set a callback that is invoked when the active service count (i.e. services with clients) registered with this process drops to zero (or becomes nonzero). The callback takes a boolean argument, which is ‘true’ if there is at least one service with clients.
AServiceManager_tryUnregister⚠
Try to unregister all services previously registered with ‘registerService’.
AServiceManager_waitForService⚠
Gets a binder object with this specific instance name. Efficiently waits for the service. If the service is not ever registered, it will wait indefinitely. Requires the threadpool to be started in the service. This also implicitly calls AIBinder_incStrong (so the caller of this function is responsible for calling AIBinder_decStrong).
AStatus_delete⚠
Deletes memory associated with the status instance.
AStatus_deleteDescription⚠
Delete description.
AStatus_fromExceptionCode⚠
New status with exception code.
AStatus_fromExceptionCodeWithMessage⚠
New status with exception code and message.
AStatus_fromServiceSpecificError⚠
New status with a service speciic error.
AStatus_fromServiceSpecificErrorWithMessage⚠
New status with a service specific error and message.
AStatus_fromStatus⚠
New status with binder_status_t. This is typically for low level failures when a binder_status_t is returned by an API on AIBinder or AParcel, and that is to be returned from a method returning an AStatus instance. This is the least preferable way to return errors. Prefer exceptions (particularly service-specific errors) when possible.
AStatus_getDescription⚠
Get human-readable description for debugging.
AStatus_getExceptionCode⚠
The exception that this status object represents.
AStatus_getMessage⚠
If there is a message associated with this status, this will return that message. If there is no message, this will return an empty string.
AStatus_getServiceSpecificError⚠
The service specific error if this object represents one. This function will only ever return a non-zero result if AStatus_getExceptionCode returns EX_SERVICE_SPECIFIC. If this function returns 0, the status object may still represent a different exception or status. To find out if this transaction as a whole is okay, use AStatus_isOk instead.
AStatus_getStatus⚠
The status if this object represents one. This function will only ever return a non-zero result if AStatus_getExceptionCode returns EX_TRANSACTION_FAILED. If this function return 0, the status object may represent a different exception or a service specific error. To find out if this transaction as a whole is okay, use AStatus_isOk instead.
AStatus_isOk⚠
Whether this object represents a successful transaction. If this function returns true, then AStatus_getExceptionCode will return EX_NONE.
AStatus_newOk⚠
New status which is considered a success.
__assert⚠
__assert2⚠
__cmsg_nxthdr⚠
__errno⚠
__recvfrom_chk⚠
__sendto_chk⚠
accept⚠
accept4⚠
android_get_application_target_sdk_version⚠
android_get_device_api_level⚠
bind⚠
c16rtomb⚠
c32rtomb⚠
connect⚠
getpeername⚠
getsockname⚠
getsockopt⚠
listen⚠
mbrtoc16⚠
mbrtoc32⚠
recv⚠
recvfrom⚠
recvmmsg⚠
recvmsg⚠
send⚠
sendmmsg⚠
sendmsg⚠
sendto⚠
setsockopt⚠
shutdown⚠
socket⚠
socketpair⚠

Type Aliases§

ABinderRpc_AccessorProviderUserData_deleteCallback
This callback is responsible deleting the void* data object that is passed in to ABinderRpc_registerAccessorProvider for the ABinderRpc_AccessorProvider_getAccessorCallback to use. That object is owned by the ABinderRpc_AccessorProvider and must remain valid for the lifetime of the callback because it may be called and use the object. This _delete callback is called after the ABinderRpc_AccessorProvider is remove and is guaranteed never to be called again.
ABinderRpc_AccessorProvider_getAccessorCallback
This callback is responsible for returning ABinderRpc_Accessor objects for a given service instance. These ABinderRpc_Accessor objects are implemented by libbinder_ndk and backed by implementations of android::os::IAccessor in libbinder.
ABinderRpc_ConnectionInfoProvider
Callback which returns the RPC connection information for libbinder to use to connect to a socket that a given service is listening on. This is needed to create an ABinderRpc_Accessor so it can connect to these services.
ABinderRpc_ConnectionInfoProviderUserData_delete
This callback is responsible deleting the void* data object that is passed in to ABinderRpc_Accessor_new for the ABinderRpc_ConnectionInfoProvider to use. That object is owned by the ABinderRpc_Accessor and must remain valid for the lifetime the Accessor because it may be used by the connection info provider callback. This _delete callback is called after the ABinderRpc_Accessor is removed and is guaranteed never to be called again.
AIBinder_Class_onCreate
This is called whenever a new AIBinder object is needed of a specific class.
AIBinder_Class_onDestroy
This is called whenever an AIBinder object is no longer referenced and needs destroyed.
AIBinder_Class_onTransact
This is called whenever a transaction needs to be processed by a local implementation.
AIBinder_DeathRecipient_onBinderDied
This function is executed on death receipt. See AIBinder_linkToDeath/AIBinder_unlinkToDeath.
AIBinder_DeathRecipient_onBinderUnlinked
This function is intended for cleaning up the data in the provided cookie, and it is executed when the DeathRecipient is unlinked. When the DeathRecipient is unlinked due to a death receipt, this method is called after the call to onBinderDied.
AIBinder_handleShellCommand
Function to execute a shell command.
AIBinder_onDump
Dump information about an AIBinder (usually for debugging).
AParcel_boolArrayAllocator
This allocates an array of size ‘length’ inside of arrayData and returns whether or not there was a success. If length is -1, then this should allocate some representation of a null array.
AParcel_boolArrayGetter
This is called to get the underlying data from an arrayData object at index.
AParcel_boolArraySetter
This is called to set an underlying value in an arrayData object at index.
AParcel_byteArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_charArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_doubleArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_floatArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_int32ArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_int64ArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_parcelableArrayAllocator
This is called to allocate an array of size ‘length’. If length is -1, then a ‘null’ array (or equivalent) should be created.
AParcel_readParcelableElement
This is called to set an underlying value in an arrayData object at index.
AParcel_stringAllocator
This is called to allocate a buffer for a C-style string (null-terminated). The returned buffer should be at least length bytes. This includes space for a null terminator. For a string, length will always be strictly less than or equal to the maximum size that can be held in a size_t and will always be greater than 0. However, if a ‘null’ string is being read, length will be -1.
AParcel_stringArrayAllocator
This is called to allocate an array of size ‘length’. If length is -1, then a ‘null’ array (or equivalent) should be created.
AParcel_stringArrayElementAllocator
This is called to allocate a string inside of an array that was allocated by an AParcel_stringArrayAllocator.
AParcel_stringArrayElementGetter
This returns the length and buffer of an array at a specific index in an arrayData object.
AParcel_uint32ArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_uint64ArrayAllocator
This is called to get the underlying data from an arrayData object.
AParcel_writeParcelableElement
This is called to parcel the underlying data from an arrayData object at index.
AServiceManager_onRegister
Function to call when a service is registered. The instance is passed as well as ownership of the binder named ‘registered’.
__kernel_pid_t
__kernel_size_t
__kernel_uid32_t
__kernel_ulong_t
__pid_t
__socklen_t
__uid_t
android_c_interface_consts__bindgen_ty_1
android_c_interface_consts__bindgen_ty_2
android_c_interface_consts__bindgen_ty_3
binder_exception_t
One of the EX_* enumerators.
binder_flags_t
Flags for AIBinder_transact.
binder_status_t
One of the STATUS_* values.
pid_t
sa_family_t
socklen_t
transaction_code_t
Codes for AIBinder_transact. This defines the range of codes available for usage. Other codes are used or reserved by the Android system.
uid_t