binder_module.h revision edbf3b6af777b721cd2a1ef461947e51e88241e1
1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* 2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License. 6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at 7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and 14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License. 15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#ifndef _BINDER_MODULE_H_ 18edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define _BINDER_MODULE_H_ 19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#ifdef __cplusplus 21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android { 22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#endif 23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 24edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#if defined(HAVE_ANDROID_OS) 25edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 26edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* obtain structures and constants from the kernel header */ 27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <sys/ioctl.h> 29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <linux/binder.h> 30edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#else 32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 33edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* Some parts of the simulator need fake versions of this 34edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * stuff in order to compile. Really this should go away 35edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * entirely... 36edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 37edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 38edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define BINDER_CURRENT_PROTOCOL_VERSION 7 39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define BINDER_TYPE_BINDER 1 41edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define BINDER_TYPE_WEAK_BINDER 2 42edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define BINDER_TYPE_HANDLE 3 43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define BINDER_TYPE_WEAK_HANDLE 4 44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define BINDER_TYPE_FD 5 45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 46edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectstruct flat_binder_object { 47edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project unsigned long type; 48edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project unsigned long flags; 49edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project union { 50edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project void *binder; 51edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project signed long handle; 52edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project }; 53edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project void *cookie; 54edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 55edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 56edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectstruct binder_write_read { 57edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project signed long write_size; 58edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project signed long write_consumed; 59edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project unsigned long write_buffer; 60edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project signed long read_size; 61edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project signed long read_consumed; 62edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project unsigned long read_buffer; 63edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 64edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 65edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectstruct binder_transaction_data { 66edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project union { 67edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size_t handle; 68edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project void *ptr; 69edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project } target; 70edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project void *cookie; 71edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project unsigned int code; 72edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 73edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project unsigned int flags; 74edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project pid_t sender_pid; 75edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project uid_t sender_euid; 76edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size_t data_size; 77edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project size_t offsets_size; 78edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 79edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project union { 80edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project struct { 81edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project const void *buffer; 82edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project const void *offsets; 83edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project } ptr; 84edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project uint8_t buf[8]; 85edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project } data; 86edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 87edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 88edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectenum transaction_flags { 89edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project TF_ONE_WAY = 0x01, 90edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project TF_ROOT_OBJECT = 0x04, 91edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project TF_STATUS_CODE = 0x08, 92edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project TF_ACCEPT_FDS = 0x10, 93edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 94edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 95edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 96edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectenum { 97edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff, 98edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100, 99edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 100edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 101edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectenum BinderDriverReturnProtocol { 102edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_ERROR, 103edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_OK, 104edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_TRANSACTION, 105edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_REPLY, 106edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_ACQUIRE_RESULT, 107edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_DEAD_REPLY, 108edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_TRANSACTION_COMPLETE, 109edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_INCREFS, 110edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_ACQUIRE, 111edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_RELEASE, 112edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_DECREFS, 113edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_ATTEMPT_ACQUIRE, 114edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_NOOP, 115edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_SPAWN_LOOPER, 116edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_FINISHED, 117edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_DEAD_BINDER, 118edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_CLEAR_DEATH_NOTIFICATION_DONE, 119edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BR_FAILED_REPLY, 120edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 121edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 122edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectenum BinderDriverCommandProtocol { 123edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_TRANSACTION, 124edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_REPLY, 125edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_ACQUIRE_RESULT, 126edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_FREE_BUFFER, 127edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_INCREFS, 128edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_ACQUIRE, 129edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_RELEASE, 130edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_DECREFS, 131edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_INCREFS_DONE, 132edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_ACQUIRE_DONE, 133edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_ATTEMPT_ACQUIRE, 134edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_REGISTER_LOOPER, 135edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_ENTER_LOOPER, 136edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_EXIT_LOOPER, 137edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_REQUEST_DEATH_NOTIFICATION, 138edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_CLEAR_DEATH_NOTIFICATION, 139edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project BC_DEAD_BINDER_DONE, 140edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; 141edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 142edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#endif 143edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 144edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#ifdef __cplusplus 145edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} // namespace android 146edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#endif 147edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 148edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#endif // _BINDER_MODULE_H_ 149