149 lines
3.0 KiB
C++
149 lines
3.0 KiB
C++
/*
|
|
* 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_
|