105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris/**************************************************************************** 205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris **************************************************************************** 305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** 405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** This header was automatically generated from a Linux kernel header 505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** of the same name, to make information necessary for userspace to 605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** call into the kernel available to libc. It contains only constants, 705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** structures, and macros generated from the original header, and thus, 805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** contains no copyrightable information. 905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** 1005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** To edit the content of this header, modify the corresponding 1105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** source file (e.g. under external/kernel-headers/original/) then 1205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** run bionic/libc/kernel/tools/update_all.py 1305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** 1405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** Any manual change here will be lost the next time this script will 1505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** be run. You've been warned! 1605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris *** 1705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris **************************************************************************** 1805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris ****************************************************************************/ 1905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#ifndef _UAPI_LINUX_BINDER_H 2005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define _UAPI_LINUX_BINDER_H 2105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#include <linux/types.h> 2205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#include <linux/ioctl.h> 2305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define B_PACK_CHARS(c1,c2,c3,c4) ((((c1) << 24)) | (((c2) << 16)) | (((c3) << 8)) | (c4)) 2405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define B_TYPE_LARGE 0x85 2505d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisenum { 2605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE), 2705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE), 2805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE), 2905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE), 3005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE), 31525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris BINDER_TYPE_FDA = B_PACK_CHARS('f', 'd', 'a', B_TYPE_LARGE), 32525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE), 3305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 3405d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisenum { 3505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff, 3605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100, 3705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 3805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#ifdef BINDER_IPC_32BIT 3905d08e9716b5974d6ed08973f44930804890b902Christopher Ferristypedef __u32 binder_size_t; 4005d08e9716b5974d6ed08973f44930804890b902Christopher Ferristypedef __u32 binder_uintptr_t; 4105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#else 4205d08e9716b5974d6ed08973f44930804890b902Christopher Ferristypedef __u64 binder_size_t; 4305d08e9716b5974d6ed08973f44930804890b902Christopher Ferristypedef __u64 binder_uintptr_t; 4405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif 45525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct binder_object_header { 4605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 type; 47525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 48525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct flat_binder_object { 49525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct binder_object_header hdr; 5005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 flags; 5105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris union { 5205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t binder; 5305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 handle; 5405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris }; 5505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t cookie; 5605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 57525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct binder_fd_object { 58525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct binder_object_header hdr; 59525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __u32 pad_flags; 60525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris union { 61525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_uintptr_t pad_binder; 62525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __u32 fd; 63525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris }; 64525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_uintptr_t cookie; 65525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 66525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct binder_buffer_object { 67525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct binder_object_header hdr; 68525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris __u32 flags; 69525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_uintptr_t buffer; 70525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_size_t length; 71525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_size_t parent; 72525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_size_t parent_offset; 73525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 74525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisenum { 75525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris BINDER_BUFFER_FLAG_HAS_PARENT = 0x01, 76525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 771308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferrisstruct binder_fd_array_object { 78525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct binder_object_header hdr; 791308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris __u32 pad; 80525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_size_t num_fds; 81525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_size_t parent; 82525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_size_t parent_offset; 83525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 8405d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct binder_write_read { 8505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_size_t write_size; 8605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_size_t write_consumed; 8705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t write_buffer; 8805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_size_t read_size; 8905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_size_t read_consumed; 9005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t read_buffer; 9105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 9205d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct binder_version { 9305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __s32 protocol_version; 9405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 9505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#ifdef BINDER_IPC_32BIT 9605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_CURRENT_PROTOCOL_VERSION 7 9705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#else 9805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_CURRENT_PROTOCOL_VERSION 8 9905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif 1001308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferrisstruct binder_node_debug_info { 1011308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris binder_uintptr_t ptr; 1021308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris binder_uintptr_t cookie; 1031308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris __u32 has_strong_ref; 1041308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris __u32 has_weak_ref; 1051308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris}; 10605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read) 10705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64) 10805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32) 10905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32) 11005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, __s32) 11105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_THREAD_EXIT _IOW('b', 8, __s32) 11205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define BINDER_VERSION _IOWR('b', 9, struct binder_version) 1131308ad3ab33294c3abfd96da12b6df58b381ce52Christopher Ferris#define BINDER_GET_NODE_DEBUG_INFO _IOWR('b', 11, struct binder_node_debug_info) 11405d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisenum transaction_flags { 11505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris TF_ONE_WAY = 0x01, 11605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris TF_ROOT_OBJECT = 0x04, 11705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris TF_STATUS_CODE = 0x08, 11805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris TF_ACCEPT_FDS = 0x10, 11905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 12005d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct binder_transaction_data { 12105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris union { 12205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 handle; 12305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t ptr; 12405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris } target; 12505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t cookie; 12605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 code; 12705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 flags; 12805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris pid_t sender_pid; 12905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris uid_t sender_euid; 13005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_size_t data_size; 13105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_size_t offsets_size; 13205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris union { 13305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris struct { 13405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t buffer; 13505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t offsets; 13605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris } ptr; 13705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u8 buf[8]; 13805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris } data; 13905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 140525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferrisstruct binder_transaction_data_sg { 141525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris struct binder_transaction_data transaction_data; 142525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris binder_size_t buffers_size; 143525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris}; 14405d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct binder_ptr_cookie { 14505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t ptr; 14605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t cookie; 14705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 14805d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct binder_handle_cookie { 14905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 handle; 15005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t cookie; 15105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} __packed; 15205d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct binder_pri_desc { 15305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __s32 priority; 15405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __u32 desc; 15505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 15605d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct binder_pri_ptr_cookie { 15705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris __s32 priority; 15805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t ptr; 15905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris binder_uintptr_t cookie; 16005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 16105d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisenum binder_driver_return_protocol { 16205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_ERROR = _IOR('r', 0, __s32), 16305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_OK = _IO('r', 1), 16405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_TRANSACTION = _IOR('r', 2, struct binder_transaction_data), 16505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_REPLY = _IOR('r', 3, struct binder_transaction_data), 16605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_ACQUIRE_RESULT = _IOR('r', 4, __s32), 16705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_DEAD_REPLY = _IO('r', 5), 16805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_TRANSACTION_COMPLETE = _IO('r', 6), 16905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_INCREFS = _IOR('r', 7, struct binder_ptr_cookie), 17005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_ACQUIRE = _IOR('r', 8, struct binder_ptr_cookie), 17105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_RELEASE = _IOR('r', 9, struct binder_ptr_cookie), 17205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_DECREFS = _IOR('r', 10, struct binder_ptr_cookie), 17305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct binder_pri_ptr_cookie), 17405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_NOOP = _IO('r', 12), 17505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_SPAWN_LOOPER = _IO('r', 13), 17605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_FINISHED = _IO('r', 14), 17705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_DEAD_BINDER = _IOR('r', 15, binder_uintptr_t), 17805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, binder_uintptr_t), 17905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BR_FAILED_REPLY = _IO('r', 17), 18005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 18105d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisenum binder_driver_command_protocol { 18205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_TRANSACTION = _IOW('c', 0, struct binder_transaction_data), 18305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_REPLY = _IOW('c', 1, struct binder_transaction_data), 18405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_ACQUIRE_RESULT = _IOW('c', 2, __s32), 18505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_FREE_BUFFER = _IOW('c', 3, binder_uintptr_t), 18605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_INCREFS = _IOW('c', 4, __u32), 18705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_ACQUIRE = _IOW('c', 5, __u32), 18805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_RELEASE = _IOW('c', 6, __u32), 18905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_DECREFS = _IOW('c', 7, __u32), 19005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_INCREFS_DONE = _IOW('c', 8, struct binder_ptr_cookie), 19105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_ACQUIRE_DONE = _IOW('c', 9, struct binder_ptr_cookie), 19205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_ATTEMPT_ACQUIRE = _IOW('c', 10, struct binder_pri_desc), 19305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_REGISTER_LOOPER = _IO('c', 11), 19405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_ENTER_LOOPER = _IO('c', 12), 19505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_EXIT_LOOPER = _IO('c', 13), 19605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_handle_cookie), 19705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_handle_cookie), 19805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t), 199525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris BC_TRANSACTION_SG = _IOW('c', 17, struct binder_transaction_data_sg), 200525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris BC_REPLY_SG = _IOW('c', 18, struct binder_transaction_data_sg), 20105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris}; 20205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif 203