| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef _BINDER_MODULE_H_ |
| #define _BINDER_MODULE_H_ |
| |
| #ifdef __cplusplus |
| namespace android { |
| #endif |
| |
| #if defined(HAVE_ANDROID_OS) |
| |
| /* obtain structures and constants from the kernel header */ |
| |
| #include <sys/ioctl.h> |
| #include <linux/binder.h> |
| |
| #else |
| |
| /* Some parts of the simulator need fake versions of this |
| * stuff in order to compile. Really this should go away |
| * entirely... |
| */ |
| |
| #define BINDER_CURRENT_PROTOCOL_VERSION 7 |
| |
| #define BINDER_TYPE_BINDER 1 |
| #define BINDER_TYPE_WEAK_BINDER 2 |
| #define BINDER_TYPE_HANDLE 3 |
| #define BINDER_TYPE_WEAK_HANDLE 4 |
| #define BINDER_TYPE_FD 5 |
| |
| struct flat_binder_object { |
| unsigned long type; |
| unsigned long flags; |
| union { |
| void *binder; |
| signed long handle; |
| }; |
| void *cookie; |
| }; |
| |
| struct binder_write_read { |
| signed long write_size; |
| signed long write_consumed; |
| unsigned long write_buffer; |
| signed long read_size; |
| signed long read_consumed; |
| unsigned long read_buffer; |
| }; |
| |
| struct binder_transaction_data { |
| union { |
| size_t handle; |
| void *ptr; |
| } target; |
| void *cookie; |
| unsigned int code; |
| |
| unsigned int flags; |
| pid_t sender_pid; |
| uid_t sender_euid; |
| size_t data_size; |
| size_t offsets_size; |
| |
| union { |
| struct { |
| const void *buffer; |
| const void *offsets; |
| } ptr; |
| uint8_t buf[8]; |
| } data; |
| }; |
| |
| enum transaction_flags { |
| TF_ONE_WAY = 0x01, |
| TF_ROOT_OBJECT = 0x04, |
| TF_STATUS_CODE = 0x08, |
| TF_ACCEPT_FDS = 0x10, |
| }; |
| |
| |
| enum { |
| FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff, |
| FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100, |
| }; |
| |
| enum BinderDriverReturnProtocol { |
| BR_ERROR, |
| BR_OK, |
| BR_TRANSACTION, |
| BR_REPLY, |
| BR_ACQUIRE_RESULT, |
| BR_DEAD_REPLY, |
| BR_TRANSACTION_COMPLETE, |
| BR_INCREFS, |
| BR_ACQUIRE, |
| BR_RELEASE, |
| BR_DECREFS, |
| BR_ATTEMPT_ACQUIRE, |
| BR_NOOP, |
| BR_SPAWN_LOOPER, |
| BR_FINISHED, |
| BR_DEAD_BINDER, |
| BR_CLEAR_DEATH_NOTIFICATION_DONE, |
| BR_FAILED_REPLY, |
| }; |
| |
| enum BinderDriverCommandProtocol { |
| BC_TRANSACTION, |
| BC_REPLY, |
| BC_ACQUIRE_RESULT, |
| BC_FREE_BUFFER, |
| BC_INCREFS, |
| BC_ACQUIRE, |
| BC_RELEASE, |
| BC_DECREFS, |
| BC_INCREFS_DONE, |
| BC_ACQUIRE_DONE, |
| BC_ATTEMPT_ACQUIRE, |
| BC_REGISTER_LOOPER, |
| BC_ENTER_LOOPER, |
| BC_EXIT_LOOPER, |
| BC_REQUEST_DEATH_NOTIFICATION, |
| BC_CLEAR_DEATH_NOTIFICATION, |
| BC_DEAD_BINDER_DONE, |
| }; |
| |
| #endif |
| |
| #ifdef __cplusplus |
| } // namespace android |
| #endif |
| |
| #endif // _BINDER_MODULE_H_ |