111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/**************************************************************************** 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** This header was automatically generated from a Linux kernel header 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** of the same name, to make information necessary for userspace to 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** call into the kernel available to libc. It contains only constants, 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** structures, and macros generated from the original header, and thus, 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** contains no copyrightable information. 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/ 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_BINDER_H 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_BINDER_H 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/ioctl.h> 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define B_PACK_CHARS(c1, c2, c3, c4) ((((c1)<<24)) | (((c2)<<16)) | (((c3)<<8)) | (c4)) 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define B_TYPE_LARGE 0x85 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum { 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE), 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE), 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE), 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE), 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE), 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum { 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff, 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100, 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct flat_binder_object { 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long type; 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long flags; 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union { 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *binder; 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed long handle; 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert }; 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *cookie; 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct binder_write_read { 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed long write_size; 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed long write_consumed; 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long write_buffer; 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed long read_size; 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed long read_consumed; 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long read_buffer; 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct binder_version { 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed long protocol_version; 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_CURRENT_PROTOCOL_VERSION 7 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read) 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, int64_t) 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_SET_MAX_THREADS _IOW('b', 5, size_t) 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, int) 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, int) 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_THREAD_EXIT _IOW('b', 8, int) 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define BINDER_VERSION _IOWR('b', 9, struct binder_version) 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum transaction_flags { 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TF_ONE_WAY = 0x01, 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TF_ROOT_OBJECT = 0x04, 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TF_STATUS_CODE = 0x08, 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TF_ACCEPT_FDS = 0x10, 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct binder_transaction_data { 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union { 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t handle; 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *ptr; 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } target; 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *cookie; 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int code; 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int flags; 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert pid_t sender_pid; 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert uid_t sender_euid; 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t data_size; 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t offsets_size; 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union { 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct { 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const void *buffer; 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const void *offsets; 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } ptr; 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert uint8_t buf[8]; 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } data; 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct binder_ptr_cookie { 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *ptr; 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *cookie; 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct binder_pri_desc { 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int priority; 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int desc; 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct binder_pri_ptr_cookie { 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int priority; 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *ptr; 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *cookie; 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum BinderDriverReturnProtocol { 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_ERROR = _IOR_BAD('r', 0, int), 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_OK = _IO('r', 1), 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_TRANSACTION = _IOR_BAD('r', 2, struct binder_transaction_data), 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_REPLY = _IOR_BAD('r', 3, struct binder_transaction_data), 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_ACQUIRE_RESULT = _IOR_BAD('r', 4, int), 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_DEAD_REPLY = _IO('r', 5), 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_TRANSACTION_COMPLETE = _IO('r', 6), 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_INCREFS = _IOR_BAD('r', 7, struct binder_ptr_cookie), 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_ACQUIRE = _IOR_BAD('r', 8, struct binder_ptr_cookie), 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_RELEASE = _IOR_BAD('r', 9, struct binder_ptr_cookie), 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_DECREFS = _IOR_BAD('r', 10, struct binder_ptr_cookie), 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_ATTEMPT_ACQUIRE = _IOR_BAD('r', 11, struct binder_pri_ptr_cookie), 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_NOOP = _IO('r', 12), 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_SPAWN_LOOPER = _IO('r', 13), 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_FINISHED = _IO('r', 14), 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_DEAD_BINDER = _IOR_BAD('r', 15, void *), 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR_BAD('r', 16, void *), 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BR_FAILED_REPLY = _IO('r', 17), 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum BinderDriverCommandProtocol { 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_TRANSACTION = _IOW_BAD('c', 0, struct binder_transaction_data), 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_REPLY = _IOW_BAD('c', 1, struct binder_transaction_data), 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_ACQUIRE_RESULT = _IOW_BAD('c', 2, int), 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_FREE_BUFFER = _IOW_BAD('c', 3, int), 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_INCREFS = _IOW_BAD('c', 4, int), 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_ACQUIRE = _IOW_BAD('c', 5, int), 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_RELEASE = _IOW_BAD('c', 6, int), 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_DECREFS = _IOW_BAD('c', 7, int), 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_INCREFS_DONE = _IOW_BAD('c', 8, struct binder_ptr_cookie), 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_ACQUIRE_DONE = _IOW_BAD('c', 9, struct binder_ptr_cookie), 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_ATTEMPT_ACQUIRE = _IOW_BAD('c', 10, struct binder_pri_desc), 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_REGISTER_LOOPER = _IO('c', 11), 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_ENTER_LOOPER = _IO('c', 12), 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_EXIT_LOOPER = _IO('c', 13), 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_REQUEST_DEATH_NOTIFICATION = _IOW_BAD('c', 14, struct binder_ptr_cookie), 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_CLEAR_DEATH_NOTIFICATION = _IOW_BAD('c', 15, struct binder_ptr_cookie), 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert BC_DEAD_BINDER_DONE = _IOW_BAD('c', 16, void *), 18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 187